diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2013-04-08 19:37:53 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2013-04-08 19:37:53 -0400 |
commit | e58bd4c2caef713b117a386f6db33ec68d1e3bb3 (patch) | |
tree | 7adc2fc209cd3b1fddfaa90cc0c9e0dfbaedb087 | |
parent | 8416d16669c58b2c7c9517857aa6eefbf8c82fd1 (diff) | |
download | nautilus-e58bd4c2caef713b117a386f6db33ec68d1e3bb3.tar.gz |
application: simplify for multiscreen GTK changes
Since now GdkDisplay objects in GTK have one single GdkScreen, this code
can now be simplified to avoid iteration on screens.
-rw-r--r-- | src/nautilus-application.c | 72 |
1 files changed, 33 insertions, 39 deletions
diff --git a/src/nautilus-application.c b/src/nautilus-application.c index dda7e0400..21b22cf58 100644 --- a/src/nautilus-application.c +++ b/src/nautilus-application.c @@ -397,15 +397,18 @@ selection_get_cb (GtkWidget *widget, } static GtkWidget * -get_desktop_manager_selection (GdkDisplay *display, int screen) +get_desktop_manager_selection (GdkScreen *screen) { char selection_name[32]; GdkAtom selection_atom; Window selection_owner; + GdkDisplay *display; GtkWidget *selection_widget; - g_snprintf (selection_name, sizeof (selection_name), "_NET_DESKTOP_MANAGER_S%d", screen); + g_snprintf (selection_name, sizeof (selection_name), + "_NET_DESKTOP_MANAGER_S%d", gdk_screen_get_number (screen)); selection_atom = gdk_atom_intern (selection_name, FALSE); + display = gdk_screen_get_display (screen); selection_owner = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), gdk_x11_atom_to_xatom_for_display (display, @@ -414,7 +417,7 @@ get_desktop_manager_selection (GdkDisplay *display, int screen) return NULL; } - selection_widget = gtk_invisible_new_for_screen (gdk_display_get_screen (display, screen)); + selection_widget = gtk_invisible_new_for_screen (screen); /* We need this for gdk_x11_get_server_time() */ gtk_widget_add_events (selection_widget, GDK_PROPERTY_CHANGE_MASK); @@ -456,38 +459,32 @@ selection_clear_event_cb (GtkWidget *widget, static void nautilus_application_create_desktop_windows (NautilusApplication *application) { - GdkDisplay *display; + GdkScreen *screen; NautilusDesktopWindow *window; GtkWidget *selection_widget; - int screens, i; - - display = gdk_display_get_default (); - screens = gdk_display_get_n_screens (display); - for (i = 0; i < screens; i++) { + screen = gdk_screen_get_default (); - DEBUG ("Creating a desktop window for screen %d", i); + DEBUG ("Creating desktop window"); - selection_widget = get_desktop_manager_selection (display, i); - if (selection_widget != NULL) { - window = nautilus_desktop_window_new (GTK_APPLICATION (application), - gdk_display_get_screen (display, i)); - - g_signal_connect (selection_widget, "selection-clear-event", - G_CALLBACK (selection_clear_event_cb), window); - - g_signal_connect (window, "unrealize", - G_CALLBACK (desktop_unrealize_cb), selection_widget); - - /* We realize it immediately so that the NAUTILUS_DESKTOP_WINDOW_ID - property is set so gnome-settings-daemon doesn't try to set the - background. And we do a gdk_flush() to be sure X gets it. */ - gtk_widget_realize (GTK_WIDGET (window)); - gdk_flush (); - - nautilus_application_desktop_windows = - g_list_prepend (nautilus_application_desktop_windows, window); - } + selection_widget = get_desktop_manager_selection (screen); + if (selection_widget != NULL) { + window = nautilus_desktop_window_new (GTK_APPLICATION (application), screen); + + g_signal_connect (selection_widget, "selection-clear-event", + G_CALLBACK (selection_clear_event_cb), window); + + g_signal_connect (window, "unrealize", + G_CALLBACK (desktop_unrealize_cb), selection_widget); + + /* We realize it immediately so that the NAUTILUS_DESKTOP_WINDOW_ID + property is set so gnome-settings-daemon doesn't try to set the + background. And we do a gdk_flush() to be sure X gets it. */ + gtk_widget_realize (GTK_WIDGET (window)); + gdk_flush (); + + nautilus_application_desktop_windows = + g_list_prepend (nautilus_application_desktop_windows, window); } } @@ -1369,20 +1366,17 @@ nautilus_application_open_desktop (NautilusApplication *application) /* Initialize the desktop link monitor singleton */ nautilus_desktop_link_monitor_get (); - if (nautilus_application_desktop_windows == NULL) { - nautilus_application_create_desktop_windows (application); - } + nautilus_application_create_desktop_windows (application); } static void nautilus_application_close_desktop (void) { - if (nautilus_application_desktop_windows != NULL) { - g_list_foreach (nautilus_application_desktop_windows, - (GFunc) gtk_widget_destroy, NULL); - g_list_free (nautilus_application_desktop_windows); - nautilus_application_desktop_windows = NULL; - } + g_list_foreach (nautilus_application_desktop_windows, + (GFunc) gtk_widget_destroy, NULL); + g_list_free (nautilus_application_desktop_windows); + nautilus_application_desktop_windows = NULL; + nautilus_desktop_link_monitor_shutdown (); } |