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>
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 86a6f48..05b622c 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)