summaryrefslogtreecommitdiff
path: root/gdk/broadway/broadway-server.h
diff options
context:
space:
mode:
authorAlexander Larsson <alexl@redhat.com>2013-11-12 12:03:50 +0100
committerAlexander Larsson <alexl@redhat.com>2013-11-12 12:03:50 +0100
commitddade6649613be5442af39b632f0277220bd6fa3 (patch)
treeb64dad4b09315f7589220f9fac82e65052b4bc89 /gdk/broadway/broadway-server.h
parentf50a3af1b7a24836c784797484cae14052cbfcdd (diff)
downloadgtk+-ddade6649613be5442af39b632f0277220bd6fa3.tar.gz
broadway: use 'click-to-focus' approach instead of 'focus-follows-mouse'
The broadway backend would move the focus from one window to another based on where the mouse was (i.e. 'focus-follows-mouse' approach). Handling the focus this wait didn't play well with widgets which rely on focus-in-event and focus-out-event, like the GtkEntry when using a completion popup window, see e.g: https://bugzilla.gnome.org/show_bug.cgi?id=708984 So instead, setup broadway to require a click in a window to move the focus (i.e. 'click-to-focus' approach): * The implicit GDK_FOCUS_CHANGE events that were generated upon reception of BROADWAY_EVENT_ENTER or BROADWAY_EVENT_LEAVE are removed. * The broadway daemon will now keep track of which is the focused window * Whenever the daemon detects an incoming BROADWAY_EVENT_BUTTON_PRESS, it will trigger the focused window switch, which sends a new BROADWAY_EVENT_FOCUS to the client, specifying which windows holds the focus. * Upon reception of a BROADWAY_EVENT_FOCUS, the client will generate a new GDK_FOCUS_CHANGE. * gdk_broadway_window_focus() was also implemented, which now requests the focus to the broadway server using a new BROADWAY_REQUEST_FOCUS_WINDOW. This is based on an initial patch from Aleksander Morgado <aleksander@lanedo.com>.
Diffstat (limited to 'gdk/broadway/broadway-server.h')
-rw-r--r--gdk/broadway/broadway-server.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/gdk/broadway/broadway-server.h b/gdk/broadway/broadway-server.h
index 7941bcdd56..e5a3718bea 100644
--- a/gdk/broadway/broadway-server.h
+++ b/gdk/broadway/broadway-server.h
@@ -78,6 +78,8 @@ gboolean broadway_server_window_move_resize (BroadwayServer *
int y,
int width,
int height);
+void broadway_server_focus_window (BroadwayServer *server,
+ gint new_focused_window);
cairo_surface_t * broadway_server_open_surface (BroadwayServer *server,
guint32 id,
char *name,