summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-11-10 17:04:31 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-11-10 20:59:05 +0100
commite0cfc66188908527039ed6238b8cc2442c5b15a1 (patch)
tree672de14a1dc1e1ae79caa5c15295a81e8c47c893 /vcl
parent5601d910ce5e157e0c740925d908159b7f382317 (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>
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx11
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);
}
};