diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-11-10 17:04:31 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-11-10 20:59:05 +0100 |
commit | e0cfc66188908527039ed6238b8cc2442c5b15a1 (patch) | |
tree | 672de14a1dc1e1ae79caa5c15295a81e8c47c893 | |
parent | 5601d910ce5e157e0c740925d908159b7f382317 (diff) |
GtkExpander, like GtkCalendar needs to not let click through to vcl
Change-Id: Ieccc019b423aa9271ce45a002672893c38f1986b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105562
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 6a82aa32eae5..db2b765841ff 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -16143,6 +16143,7 @@ class GtkInstanceExpander : public GtkInstanceContainer, public virtual weld::Ex private: GtkExpander* m_pExpander; gulong m_nSignalId; + gulong m_nButtonPressEventSignalId; static void signalExpanded(GtkExpander* pExpander, GParamSpec*, gpointer widget) { @@ -16174,11 +16175,20 @@ private: pThis->signal_expanded(); } + static gboolean signalButton(GtkWidget*, GdkEventButton*, gpointer) + { + // don't let button press get to parent window, for the case of the + // an expander in a sidebar where otherwise single click to expand + // doesn't work + return true; + } + public: GtkInstanceExpander(GtkExpander* pExpander, GtkInstanceBuilder* pBuilder, bool bTakeOwnership) : GtkInstanceContainer(GTK_CONTAINER(pExpander), pBuilder, bTakeOwnership) , m_pExpander(pExpander) , m_nSignalId(g_signal_connect(m_pExpander, "notify::expanded", G_CALLBACK(signalExpanded), this)) + , m_nButtonPressEventSignalId(g_signal_connect_after(m_pExpander, "button-press-event", G_CALLBACK(signalButton), this)) { } @@ -16194,6 +16204,7 @@ public: virtual ~GtkInstanceExpander() override { + g_signal_handler_disconnect(m_pExpander, m_nButtonPressEventSignalId); g_signal_handler_disconnect(m_pExpander, m_nSignalId); } }; |