diff options
author | Benjamin Otte <otte@redhat.com> | 2013-04-10 23:11:52 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2013-04-15 15:43:26 +0200 |
commit | 7ef508ff4a40c11c8ef58e8f74ba7ad0e93888a3 (patch) | |
tree | 82baff5a09882dd29c07f37d5f54e56b7cf82ece /gdk/gdkdisplaymanager.c | |
parent | d29a4411065ce9eb75e2976bac9593a6709fb6d0 (diff) | |
download | gtk+-7ef508ff4a40c11c8ef58e8f74ba7ad0e93888a3.tar.gz |
displaymanager: Handle list of displays in base class
This moves the add/remove_display() functions from the subclasses to
GdkDisplay and GdkDisplayManager. It also gets rid of the list_displays
vfunc.
Diffstat (limited to 'gdk/gdkdisplaymanager.c')
-rw-r--r-- | gdk/gdkdisplaymanager.c | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/gdk/gdkdisplaymanager.c b/gdk/gdkdisplaymanager.c index de045828e7..0442ae0580 100644 --- a/gdk/gdkdisplaymanager.c +++ b/gdk/gdkdisplaymanager.c @@ -502,7 +502,7 @@ gdk_display_manager_set_default_display (GdkDisplayManager *manager, GSList * gdk_display_manager_list_displays (GdkDisplayManager *manager) { - return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->list_displays (manager); + return g_slist_copy (manager->displays); } /** @@ -589,3 +589,29 @@ gdk_atom_name (GdkAtom atom) return GDK_DISPLAY_MANAGER_GET_CLASS (manager)->get_atom_name (manager, atom); } + +void +_gdk_display_manager_add_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + if (manager->displays == NULL) + gdk_display_manager_set_default_display (manager, display); + + manager->displays = g_slist_prepend (manager->displays, display); +} + +/* NB: This function can be called multiple times per display. */ +void +_gdk_display_manager_remove_display (GdkDisplayManager *manager, + GdkDisplay *display) +{ + manager->displays = g_slist_remove (manager->displays, display); + + if (manager->default_display == display) + { + if (manager->displays) + gdk_display_manager_set_default_display (manager, manager->displays->data); + else + gdk_display_manager_set_default_display (manager, NULL); + } +} |