summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-10-01 10:43:52 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-10-01 21:32:32 +0200
commit96d078596c4621319b355b131b90fe1291e0445f (patch)
tree6bd56e37ed203a312e2d239b7a00e7a40e2d23b4
parentaefff80c531d1fe9747157a7068b3d58b6e0349f (diff)
bundle key forward calls together as a function
Change-Id: I9f3fe4ea0ac3bd0313d76a04eb3c44ce2192aede Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122925 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk3/gtkframe.cxx21
1 files changed, 14 insertions, 7 deletions
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index 7375ca4e9d7c..a62bdd67162b 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -3835,6 +3835,18 @@ gboolean GtkSalFrame::signalUnmap(GtkWidget*, GdkEvent*, gpointer frame)
#endif
#if !GTK_CHECK_VERSION(4, 0, 0)
+
+static bool key_forward(GdkEventKey* pEvent, GtkWindow* pDest)
+{
+ gpointer pClass = g_type_class_ref(GTK_TYPE_WINDOW);
+ GtkWidgetClass* pWindowClass = GTK_WIDGET_CLASS(pClass);
+ bool bHandled = pEvent->type == GDK_KEY_PRESS
+ ? pWindowClass->key_press_event(GTK_WIDGET(pDest), pEvent)
+ : pWindowClass->key_release_event(GTK_WIDGET(pDest), pEvent);
+ g_type_class_unref(pClass);
+ return bHandled;
+}
+
gboolean GtkSalFrame::signalKey(GtkWidget* pWidget, GdkEventKey* pEvent, gpointer frame)
{
UpdateLastInputEventTime(pEvent->time);
@@ -3853,15 +3865,10 @@ gboolean GtkSalFrame::signalKey(GtkWidget* pWidget, GdkEventKey* pEvent, gpointe
{
if (!gtk_widget_get_realized(pFocusWindow))
return true;
- gpointer pClass = g_type_class_ref(GTK_TYPE_WINDOW);
- GtkWidgetClass* pWindowClass = GTK_WIDGET_CLASS(pClass);
+
// if the focus is not in our main widget, see if there is a handler
// for this key stroke in GtkWindow first
- bool bHandled = pEvent->type == GDK_KEY_PRESS
- ? pWindowClass->key_press_event(pThis->m_pWindow, pEvent)
- : pWindowClass->key_release_event(pThis->m_pWindow, pEvent);
- g_type_class_unref(pClass);
- if (bHandled)
+ if (key_forward(pEvent, GTK_WINDOW(pThis->m_pWindow)))
return true;
// Is focus inside an InterimItemWindow? In which case find that