summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-11-13 21:29:31 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-11-14 15:39:00 +0100
commit7374b8aceba8e7f6a89982844bcdc3a861bf0b49 (patch)
tree3bb745cd43e3cdf38d4786ddc24a7c1a8761b14e /vcl
parent8e0f44bf5b0687b4429e2900d22225993047367d (diff)
Resolves: tdf#121394 listen to key strokes only if GDK_BUTTON_PRESS_MASK set
Change-Id: I5471ed2f4243f79fd0bcb4f65079318c4dd65e26 Reviewed-on: https://gerrit.libreoffice.org/63345 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx9
1 files changed, 7 insertions, 2 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 86a6f4882a94..05b622c24015 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -1221,8 +1221,12 @@ public:
, m_bFrozen(false)
, m_nFocusInSignalId(0)
, m_nFocusOutSignalId(0)
- , m_nKeyPressSignalId(g_signal_connect(pWidget, "key-press-event", G_CALLBACK(signalKeyPress), this))
{
+ GdkEventMask eEventMask(static_cast<GdkEventMask>(gtk_widget_get_events(pWidget)));
+ if (eEventMask & GDK_BUTTON_PRESS_MASK)
+ m_nKeyPressSignalId = g_signal_connect(pWidget, "key-press-event", G_CALLBACK(signalKeyPress), this);
+ else
+ m_nKeyPressSignalId = 0;
}
virtual void set_sensitive(bool sensitive) override
@@ -1522,7 +1526,8 @@ public:
virtual ~GtkInstanceWidget() override
{
- g_signal_handler_disconnect(m_pWidget, m_nKeyPressSignalId);
+ if (m_nKeyPressSignalId)
+ g_signal_handler_disconnect(m_pWidget, m_nKeyPressSignalId);
if (m_nFocusInSignalId)
g_signal_handler_disconnect(m_pWidget, m_nFocusInSignalId);
if (m_nFocusOutSignalId)