Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2021-02-17 01:57:46 +0300
committerlovetox <philipp@hoerist.com>2021-02-27 14:54:10 +0300
commit488663da30b89f0ea0641f205fd7160077f5d153 (patch)
tree9c958f5c64c8e25a5918d3fd2cb6f52854fbf1cb
parentf5ebd9da146b019e1f9409858dff3bfa605ee1b3 (diff)
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
-rw-r--r--gajim/chat_control_base.py10
-rw-r--r--gajim/data/gui/chat_control.ui1
-rw-r--r--gajim/data/gui/groupchat_control.ui1
3 files changed, 10 insertions, 2 deletions
diff --git a/gajim/chat_control_base.py b/gajim/chat_control_base.py
index b48e8a4fb..a8acec6b3 100644
--- a/gajim/chat_control_base.py
+++ b/gajim/chat_control_base.py
@@ -178,6 +178,16 @@ class ChatControlBase(ChatCommandProcessor, CommandTools, EventHelper):
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)
diff --git a/gajim/data/gui/chat_control.ui b/gajim/data/gui/chat_control.ui
index 9932a71ae..f47c14190 100644
--- a/gajim/data/gui/chat_control.ui
+++ b/gajim/data/gui/chat_control.ui
@@ -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"/>
diff --git a/gajim/data/gui/groupchat_control.ui b/gajim/data/gui/groupchat_control.ui
index f222953dd..f42f8d2f7 100644
--- a/gajim/data/gui/groupchat_control.ui
+++ b/gajim/data/gui/groupchat_control.ui
@@ -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"/>