diff --git a/src/chat.py b/src/chat.py index fc9348352..ac146552b 100644 --- a/src/chat.py +++ b/src/chat.py @@ -363,38 +363,27 @@ class Chat: textview.scroll_to_iter(end_iter, 0, False, 1, 1) return False - def size_request(self, a, b, xml_top, message_scrolledwindow): + def size_request(self, message_textview , requisition, xml_top, + message_scrolledwindow): ''' When message_textview changes its size. If the new height will enlarge the window, enable the scrollbar automatic policy''' - message_textview = xml_top.get_widget('message_textview') + if message_textview.window is None: + return conversation_scrolledwindow = \ xml_top.get_widget('conversation_scrolledwindow') conversation_textview = \ xml_top.get_widget('conversation_textview') - vpaned = xml_top.get_widget('vpaned') - if not vpaned.window: - return - - banner_eventbox = xml_top.get_widget('banner_eventbox') - actions_hbox = xml_top.get_widget('actions_hbox') - if not actions_hbox: - actions_hbox = xml_top.get_widget('gc_actions_hbox') - - x1 = conversation_scrolledwindow.get_property('height-request') - x2 = b.height - x3 = vpaned.window.get_size()[1] - x4 = banner_eventbox.size_request()[1] - x5 = actions_hbox.size_request()[1] - # difference between old height and new height - diff_y = message_textview.window.get_size()[1] - b.height - add_length = 22 - if not self.compact_view_current_state: - add_length += x4 + x5 + + min_height = conversation_scrolledwindow.get_property('height-request') + conversation_height = conversation_textview.window.get_size()[1] + message_height = message_textview.window.get_size()[1] + diff_y = message_height - requisition.height if diff_y is not 0: - if x2 + x1 + add_length > x3: + if conversation_height + diff_y < min_height: message_scrolledwindow.set_property('vscrollbar-policy', gtk.POLICY_AUTOMATIC) message_scrolledwindow.set_property('hscrollbar-policy', gtk.POLICY_AUTOMATIC) - message_scrolledwindow.set_property('height-request', x3 - x1 - add_length) + message_scrolledwindow.set_property('height-request', message_height + \ + conversation_height - min_height) self.bring_scroll_to_end(message_textview) else: message_scrolledwindow.set_property('vscrollbar-policy', gtk.POLICY_NEVER) diff --git a/src/gtkgui.glade b/src/gtkgui.glade index 5d5786a7e..1a1e3f0eb 100644 --- a/src/gtkgui.glade +++ b/src/gtkgui.glade @@ -8560,14 +8560,16 @@ Custom 6 - + True - True + False + 6 + 1 200 - 40 + 60 True True GTK_POLICY_AUTOMATIC @@ -8601,18 +8603,18 @@ Custom - False - True + 0 + True + True - 45 True True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC + GTK_POLICY_NEVER + GTK_POLICY_NEVER GTK_SHADOW_IN GTK_CORNER_TOP_LEFT @@ -8639,8 +8641,9 @@ Custom - False - False + 0 + False + True @@ -10065,14 +10068,15 @@ Status message - + True - True + False + 1 3 - 40 + 60 True True GTK_POLICY_AUTOMATIC @@ -10106,61 +10110,48 @@ Status message - True - True + 0 + True + True - + + 3 True True - False - 0 + GTK_POLICY_NEVER + GTK_POLICY_NEVER + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT - - 3 - 53 + + 1 True True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - 1 - True - True - True - False - True - GTK_JUSTIFY_LEFT - GTK_WRAP_WORD - True - 2 - 2 - 0 - 2 - 2 - 0 - - - - + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 2 + 2 + 0 + 2 + 2 + 0 + + - - 0 - True - True - - False - False + 0 + False + True