[gtk+] wayland: Add request focus support via gtk_shell
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] wayland: Add request focus support via gtk_shell
- Date: Thu, 10 Mar 2016 05:04:38 +0000 (UTC)
commit 8fb7f50028eb3729161448b7228f69b673a93b45
Author: Jonas Ådahl <jadahl gmail com>
Date: Tue Mar 8 17:03:06 2016 +0800
wayland: Add request focus support via gtk_shell
A gtk_surface.present request was added to gtk_surface which takes
timestamp from some input event, and uses that timestamp to figure out
whether the window can be presented or not. If we don't have a
timestamp, we should just give up instead of making up our own,
otherwise we might steal someones focus.
https://bugzilla.gnome.org/show_bug.cgi?id=763037
gdk/wayland/gdkwindow-wayland.c | 13 +++++++++++++
gdk/wayland/protocol/gtk-shell.xml | 4 ++++
2 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index bf2dcd0..707b2dc 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -2093,6 +2093,19 @@ static void
gdk_wayland_window_focus (GdkWindow *window,
guint32 timestamp)
{
+ GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+
+ if (!impl->display_server.gtk_surface)
+ return;
+
+ /* We didn't have an event to fetch a time from, meaning we have nothing valid
+ * to send. This should rather be translated to a 'needs-attention' request or
+ * something.
+ */
+ if (timestamp == GDK_CURRENT_TIME)
+ return;
+
+ gtk_surface1_present (impl->display_server.gtk_surface, timestamp);
}
static void
diff --git a/gdk/wayland/protocol/gtk-shell.xml b/gdk/wayland/protocol/gtk-shell.xml
index aa9993d..2e750ea 100644
--- a/gdk/wayland/protocol/gtk-shell.xml
+++ b/gdk/wayland/protocol/gtk-shell.xml
@@ -42,6 +42,10 @@
<request name="set_modal"/>
<request name="unset_modal"/>
+
+ <request name="present">
+ <arg name="time" type="uint"/>
+ </request>
</interface>
</protocol>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]