summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-07-24 15:57:14 +0100
committerCaolán McNamara <caolanm@redhat.com>2020-07-24 18:11:50 +0200
commit5c5dbcbf76f9f1a22538bc7f20966618cd9cdeaf (patch)
treed0975be83e40decf43b5bd580bb6e3023dd94975 /vcl
parent0bbef33b0a67d3394e6f442e8d69f9531b861e07 (diff)
block mouse down on GtkTextView getting to toplevel parent
making it similar to GtkEntry Change-Id: Ic3621dc308222b2464f0daf919a10b81bc887f6d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99381 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx14
1 files changed, 13 insertions, 1 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 8d6c2b1e345b..1dd294f7b995 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -12462,8 +12462,18 @@ private:
gulong m_nChangedSignalId; // we don't disable/enable this one, it's to implement max-length
gulong m_nInsertTextSignalId;
gulong m_nCursorPosSignalId;
- gulong m_nHasSelectionSignalId; // we don't disable/enable this one, it's to implement auto-scroll to cursor on losing selection
+ gulong m_nHasSelectionSignalId; // we don't disable/enable this one, it's to implement
+ // auto-scroll to cursor on losing selection
gulong m_nVAdjustChangedSignalId;
+ gulong m_nButtonPressEvent; // we don't disable/enable this one, it's to block mouse
+ // click down from getting to (potential) toplevel
+ // GtkSalFrame parent, which grabs focus away
+
+ static gboolean signalButtonPressEvent(GtkWidget*, GdkEventButton*, gpointer)
+ {
+ // e.g. on clicking on the help TextView in OTableDesignHelpBar the currently displayed text shouldn't disappear
+ return true;
+ }
static void signalChanged(GtkTextBuffer*, gpointer widget)
{
@@ -12542,6 +12552,7 @@ public:
, m_nCursorPosSignalId(g_signal_connect(m_pTextBuffer, "notify::cursor-position", G_CALLBACK(signalCursorPosition), this))
, m_nHasSelectionSignalId(g_signal_connect(m_pTextBuffer, "notify::has-selection", G_CALLBACK(signalHasSelection), this))
, m_nVAdjustChangedSignalId(g_signal_connect(m_pVAdjustment, "value-changed", G_CALLBACK(signalVAdjustValueChanged), this))
+ , m_nButtonPressEvent(g_signal_connect_after(m_pTextView, "button-press-event", G_CALLBACK(signalButtonPressEvent), this))
{
}
@@ -12743,6 +12754,7 @@ public:
virtual ~GtkInstanceTextView() override
{
+ g_signal_handler_disconnect(m_pTextView, m_nButtonPressEvent);
g_signal_handler_disconnect(m_pVAdjustment, m_nVAdjustChangedSignalId);
g_signal_handler_disconnect(m_pTextBuffer, m_nInsertTextSignalId);
g_signal_handler_disconnect(m_pTextBuffer, m_nChangedSignalId);