summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/inc/unx/gtk/gtkframe.hxx1
-rw-r--r--vcl/unx/gtk/gtksalmenu.cxx1
-rw-r--r--vcl/unx/gtk3/gtk3gtkframe.cxx7
3 files changed, 8 insertions, 1 deletions
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index 1b48aa338978..b402bb2dcbd5 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -544,6 +544,7 @@ public:
guint* pGdkKeyCode, GdkModifierType *pGdkModifiers);
static guint32 GetLastInputEventTime();
+ static void UpdateLastInputEventTime(guint32 nUserInputTime);
};
#define OOO_TYPE_FIXED ooo_fixed_get_type()
diff --git a/vcl/unx/gtk/gtksalmenu.cxx b/vcl/unx/gtk/gtksalmenu.cxx
index c891cf339e27..75cab1cab1cd 100644
--- a/vcl/unx/gtk/gtksalmenu.cxx
+++ b/vcl/unx/gtk/gtksalmenu.cxx
@@ -679,6 +679,7 @@ bool GtkSalMenu::TakeFocus()
static void MenuBarReturnFocus(GtkMenuShell*, gpointer menu)
{
+ GtkSalFrame::UpdateLastInputEventTime(gtk_get_current_event_time());
GtkSalMenu* pMenu = static_cast<GtkSalMenu*>(menu);
pMenu->ReturnFocus();
}
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index d016d320b5ae..00438eaee236 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -2028,8 +2028,13 @@ guint32 GtkSalFrame::GetLastInputEventTime()
return nLastUserInputTime;
}
-static void UpdateLastInputEventTime(guint32 nUserInputTime)
+void GtkSalFrame::UpdateLastInputEventTime(guint32 nUserInputTime)
{
+ //gtk3 can generate a synthetic crossing event with a useless 0
+ //(GDK_CURRENT_TIME) timestamp on showing a menu from the main
+ //menubar, which is unhelpful, so ignore the 0 timestamps
+ if (nUserInputTime == GDK_CURRENT_TIME)
+ return;
nLastUserInputTime = nUserInputTime;
}