Commit 8031e049 authored by Daniel Brötzmann's avatar Daniel Brötzmann

ChatControlBase: Add workaround for hscrollbar

As soon as a line break occurs in Gtk.TextView with word-char wrapping enabled,
a hyphen character is automatically inserted before the line break. This triggers
the hscrollbar to show, see: https://gitlab.gnome.org/GNOME/gtk/-/issues/2384
parent e985e13b
Pipeline #7344 failed with stages
in 7 minutes and 20 seconds
......@@ -178,6 +178,16 @@ def __init__(self, parent_win, widget_name, contact, acct,
self.conv_textview.tv.connect('key-press-event',
self._on_conv_textview_key_press_event)
# This is a workaround: as soon as a line break occurs in Gtk.TextView
# with word-char wrapping enabled, a hyphen character is automatically
# inserted before the line break. This triggers the hscrollbar to show,
# see: https://gitlab.gnome.org/GNOME/gtk/-/issues/2384
# Using set_hscroll_policy(Gtk.Scrollable.Policy.NEVER) would cause bad
# performance during resize, and prevent the window from being shrinked
# horizontally under certain conditions (applies to GroupchatControl)
hscrollbar = self.xml.conversation_scrolledwindow.get_hscrollbar()
hscrollbar.hide()
self.xml.conversation_scrolledwindow.add(self.conv_textview.tv)
widget = self.xml.conversation_scrolledwindow.get_vadjustment()
widget.connect('changed', self.on_conversation_vadjustment_changed)
......
......@@ -621,7 +621,6 @@
<object class="GtkScrolledWindow" id="conversation_scrolledwindow">
<property name="height_request">60</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<property name="overlay_scrolling">False</property>
<signal name="edge-reached" handler="_on_edge_reached" swapped="no"/>
......
......@@ -261,7 +261,6 @@
<property name="height_request">60</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="hscrollbar_policy">never</property>
<property name="shadow_type">in</property>
<property name="overlay_scrolling">False</property>
<signal name="edge-reached" handler="_on_edge_reached" swapped="no"/>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment