MirPixelFormat _gdk_mir_display_get_pixel_format (GdkDisplay *display, MirBufferUsage usage);
+void _gdk_mir_display_focus_window (GdkDisplay *display, GdkWindow *window);
+
+void _gdk_mir_display_unfocus_window (GdkDisplay *display, GdkWindow *window);
+
gboolean _gdk_mir_display_init_egl_display (GdkDisplay *display);
EGLDisplay _gdk_mir_display_get_egl_display (GdkDisplay *display);
GdkKeymap *keymap;
+ GdkWindow *focused_window;
+
MirPixelFormat sw_pixel_format;
MirPixelFormat hw_pixel_format;
return mir_dpy->sw_pixel_format;
}
+void
+_gdk_mir_display_focus_window (GdkDisplay *display,
+ GdkWindow *window)
+{
+ GdkMirDisplay *mir_display = GDK_MIR_DISPLAY (display);
+
+ g_set_object (&mir_display->focused_window, window);
+}
+
+void
+_gdk_mir_display_unfocus_window (GdkDisplay *display,
+ GdkWindow *window)
+{
+ GdkMirDisplay *mir_display = GDK_MIR_DISPLAY (display);
+
+ if (window == mir_display->focused_window)
+ g_clear_object (&mir_display->focused_window);
+}
+
gboolean
_gdk_mir_display_init_egl_display (GdkDisplay *display)
{
GdkEvent *event;
if (focused)
- gdk_synthesize_window_state (window, 0, GDK_WINDOW_STATE_FOCUSED);
+ {
+ gdk_synthesize_window_state (window, 0, GDK_WINDOW_STATE_FOCUSED);
+ _gdk_mir_display_focus_window (gdk_window_get_display (window), window);
+ }
else
- gdk_synthesize_window_state (window, GDK_WINDOW_STATE_FOCUSED, 0);
+ {
+ gdk_synthesize_window_state (window, GDK_WINDOW_STATE_FOCUSED, 0);
+ _gdk_mir_display_unfocus_window (gdk_window_get_display (window), window);
+ }
event = gdk_event_new (GDK_FOCUS_CHANGE);
event->focus_change.send_event = FALSE;