summaryrefslogtreecommitdiff
path: root/nautilus-desktop/nautilus-desktop-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'nautilus-desktop/nautilus-desktop-window.c')
-rw-r--r--nautilus-desktop/nautilus-desktop-window.c643
1 files changed, 329 insertions, 314 deletions
diff --git a/nautilus-desktop/nautilus-desktop-window.c b/nautilus-desktop/nautilus-desktop-window.c
index b3b4a8ea1..f35c849c6 100644
--- a/nautilus-desktop/nautilus-desktop-window.c
+++ b/nautilus-desktop/nautilus-desktop-window.c
@@ -1,4 +1,3 @@
-
/*
* Nautilus
*
@@ -42,30 +41,31 @@
#include <src/nautilus-window.h>
#include <src/nautilus-application.h>
-struct NautilusDesktopWindowDetails {
- gulong size_changed_id;
+struct NautilusDesktopWindowDetails
+{
+ gulong size_changed_id;
- gboolean loaded;
+ gboolean loaded;
- GtkWidget *desktop_selection;
+ GtkWidget *desktop_selection;
- gboolean composited;
- cairo_surface_t *surface;
+ gboolean composited;
+ cairo_surface_t *surface;
};
-G_DEFINE_TYPE (NautilusDesktopWindow, nautilus_desktop_window,
- NAUTILUS_TYPE_WINDOW);
+G_DEFINE_TYPE (NautilusDesktopWindow, nautilus_desktop_window,
+ NAUTILUS_TYPE_WINDOW);
static void
background_changed (NautilusDesktopWindow *window)
{
- GtkWidget *widget = GTK_WIDGET (window);
- GdkScreen *screen = gtk_widget_get_screen (widget);
+ GtkWidget *widget = GTK_WIDGET (window);
+ GdkScreen *screen = gtk_widget_get_screen (widget);
- g_clear_pointer (&window->details->surface, cairo_surface_destroy);
+ g_clear_pointer (&window->details->surface, cairo_surface_destroy);
- window->details->surface = gnome_bg_get_surface_from_root (screen);
- gtk_widget_queue_draw (widget);
+ window->details->surface = gnome_bg_get_surface_from_root (screen);
+ gtk_widget_queue_draw (widget);
}
static GdkFilterReturn
@@ -73,297 +73,309 @@ filter_func (GdkXEvent *xevent,
GdkEvent *event,
NautilusDesktopWindow *window)
{
- XEvent *xev = (XEvent *) xevent;
- GdkAtom gdkatom;
+ XEvent *xev = (XEvent *) xevent;
+ GdkAtom gdkatom;
- if (xev->type != PropertyNotify) {
- return GDK_FILTER_CONTINUE;
- }
+ if (xev->type != PropertyNotify)
+ {
+ return GDK_FILTER_CONTINUE;
+ }
- gdkatom = gdk_atom_intern_static_string ("_XROOTPMAP_ID");
- if (xev->xproperty.atom != gdk_x11_atom_to_xatom (gdkatom)) {
- return GDK_FILTER_CONTINUE;
- }
+ gdkatom = gdk_atom_intern_static_string ("_XROOTPMAP_ID");
+ if (xev->xproperty.atom != gdk_x11_atom_to_xatom (gdkatom))
+ {
+ return GDK_FILTER_CONTINUE;
+ }
- background_changed (window);
+ background_changed (window);
- return GDK_FILTER_CONTINUE;
+ return GDK_FILTER_CONTINUE;
}
static void
nautilus_desktop_window_composited_changed (GtkWidget *widget)
{
- NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (widget);
- GdkScreen *screen = gtk_widget_get_screen (widget);
- gboolean composited = gdk_screen_is_composited (screen);
- GdkWindow *root;
- gint events;
-
- if (window->details->composited == composited) {
- return;
- }
-
- window->details->composited = composited;
- root = gdk_screen_get_root_window (screen);
-
- if (composited) {
- gdk_window_remove_filter (root, (GdkFilterFunc) filter_func, window);
-
- g_clear_pointer (&window->details->surface, cairo_surface_destroy);
- } else {
- events = gdk_window_get_events (root);
-
- gdk_window_set_events (root, events | GDK_PROPERTY_CHANGE_MASK);
- gdk_window_add_filter (root, (GdkFilterFunc) filter_func, window);
- background_changed (window);
- }
+ NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (widget);
+ GdkScreen *screen = gtk_widget_get_screen (widget);
+ gboolean composited = gdk_screen_is_composited (screen);
+ GdkWindow *root;
+ gint events;
+
+ if (window->details->composited == composited)
+ {
+ return;
+ }
+
+ window->details->composited = composited;
+ root = gdk_screen_get_root_window (screen);
+
+ if (composited)
+ {
+ gdk_window_remove_filter (root, (GdkFilterFunc) filter_func, window);
+
+ g_clear_pointer (&window->details->surface, cairo_surface_destroy);
+ }
+ else
+ {
+ events = gdk_window_get_events (root);
+
+ gdk_window_set_events (root, events | GDK_PROPERTY_CHANGE_MASK);
+ gdk_window_add_filter (root, (GdkFilterFunc) filter_func, window);
+ background_changed (window);
+ }
}
static gboolean
nautilus_desktop_window_draw (GtkWidget *widget,
cairo_t *cr)
{
- NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (widget);
+ NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (widget);
- if (window->details->surface) {
- cairo_set_source_surface (cr, window->details->surface, 0, 0);
- cairo_paint (cr);
- }
+ if (window->details->surface)
+ {
+ cairo_set_source_surface (cr, window->details->surface, 0, 0);
+ cairo_paint (cr);
+ }
- return GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->draw (widget, cr);
+ return GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->draw (widget, cr);
}
static void
nautilus_desktop_window_update_directory (NautilusDesktopWindow *window)
{
- GFile *location;
-
- g_assert (NAUTILUS_IS_DESKTOP_WINDOW (window));
-
- window->details->loaded = FALSE;
- location = g_file_new_for_uri (EEL_DESKTOP_URI);
- /* We use NAUTILUS_WINDOW_OPEN_FLAG_DONT_MAKE_ACTIVE so the nautilus-window
- * doesn't call gtk_window_present () which raises the window on the stack
- * and actually hides it from the background */
- nautilus_application_open_location_full (NAUTILUS_APPLICATION (g_application_get_default ()),
- location,
- NAUTILUS_WINDOW_OPEN_FLAG_DONT_MAKE_ACTIVE,
- NULL, NAUTILUS_WINDOW (window), NULL);
- window->details->loaded = TRUE;
-
- g_object_unref (location);
+ GFile *location;
+
+ g_assert (NAUTILUS_IS_DESKTOP_WINDOW (window));
+
+ window->details->loaded = FALSE;
+ location = g_file_new_for_uri (EEL_DESKTOP_URI);
+ /* We use NAUTILUS_WINDOW_OPEN_FLAG_DONT_MAKE_ACTIVE so the nautilus-window
+ * doesn't call gtk_window_present () which raises the window on the stack
+ * and actually hides it from the background */
+ nautilus_application_open_location_full (NAUTILUS_APPLICATION (g_application_get_default ()),
+ location,
+ NAUTILUS_WINDOW_OPEN_FLAG_DONT_MAKE_ACTIVE,
+ NULL, NAUTILUS_WINDOW (window), NULL);
+ window->details->loaded = TRUE;
+
+ g_object_unref (location);
}
static void
nautilus_desktop_window_finalize (GObject *obj)
{
- NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (obj);
- GdkScreen *screen;
- GdkWindow *root;
+ NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (obj);
+ GdkScreen *screen;
+ GdkWindow *root;
- nautilus_desktop_link_monitor_shutdown ();
+ nautilus_desktop_link_monitor_shutdown ();
- if (window->details->composited == FALSE) {
- screen = gtk_widget_get_screen (GTK_WIDGET (window));
- root = gdk_screen_get_root_window (screen);
+ if (window->details->composited == FALSE)
+ {
+ screen = gtk_widget_get_screen (GTK_WIDGET (window));
+ root = gdk_screen_get_root_window (screen);
- gdk_window_remove_filter (root, (GdkFilterFunc) filter_func, window);
- }
+ gdk_window_remove_filter (root, (GdkFilterFunc) filter_func, window);
+ }
- g_clear_pointer (&window->details->surface, cairo_surface_destroy);
+ g_clear_pointer (&window->details->surface, cairo_surface_destroy);
- G_OBJECT_CLASS (nautilus_desktop_window_parent_class)->finalize (obj);
+ G_OBJECT_CLASS (nautilus_desktop_window_parent_class)->finalize (obj);
}
static void
nautilus_desktop_window_init_actions (NautilusDesktopWindow *window)
{
- GAction *action;
-
- /* Don't allow close action on desktop */
- action = g_action_map_lookup_action (G_ACTION_MAP (window),
- "close-current-view");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
-
- /* Don't allow new tab on desktop */
- action = g_action_map_lookup_action (G_ACTION_MAP (window),
- "new-tab");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
-
- /* Don't allow switching to home dir on desktop */
- action = g_action_map_lookup_action (G_ACTION_MAP (window),
- "go-home");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+ GAction *action;
+
+ /* Don't allow close action on desktop */
+ action = g_action_map_lookup_action (G_ACTION_MAP (window),
+ "close-current-view");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+
+ /* Don't allow new tab on desktop */
+ action = g_action_map_lookup_action (G_ACTION_MAP (window),
+ "new-tab");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+
+ /* Don't allow switching to home dir on desktop */
+ action = g_action_map_lookup_action (G_ACTION_MAP (window),
+ "go-home");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
}
static void
-selection_get_cb (GtkWidget *widget,
- GtkSelectionData *selection_data,
- guint info,
- guint time)
+selection_get_cb (GtkWidget *widget,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint time)
{
- /* No extra targets atm */
+ /* No extra targets atm */
}
static gboolean
-selection_clear_event_cb (GtkWidget *widget,
- GdkEventSelection *event,
- NautilusDesktopWindow *window)
+selection_clear_event_cb (GtkWidget *widget,
+ GdkEventSelection *event,
+ NautilusDesktopWindow *window)
{
- gtk_widget_destroy (GTK_WIDGET (window));
+ gtk_widget_destroy (GTK_WIDGET (window));
- return TRUE;
+ return TRUE;
}
static void
nautilus_desktop_window_init_selection (NautilusDesktopWindow *window)
{
- char selection_name[32];
- GdkAtom selection_atom;
- Window selection_owner;
- GdkDisplay *display;
- GtkWidget *selection_widget;
- GdkScreen *screen;
-
- screen = gdk_screen_get_default ();
-
- 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,
- selection_atom));
- if (selection_owner != None) {
- g_critical ("Another desktop manager in use; desktop window won't be created");
- return;
- }
-
- 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);
-
- if (!gtk_selection_owner_set_for_display (display,
- selection_widget,
- selection_atom,
- gdk_x11_get_server_time (gtk_widget_get_window (selection_widget)))) {
- gtk_widget_destroy (selection_widget);
- g_critical ("Can't set ourselves as selection owner for desktop manager; "
- "desktop window won't be created");
- return;
- }
-
- g_signal_connect (selection_widget, "selection-get",
- G_CALLBACK (selection_get_cb), window);
- g_signal_connect (selection_widget, "selection-clear-event",
- G_CALLBACK (selection_clear_event_cb), window);
-
- window->details->desktop_selection = selection_widget;
+ char selection_name[32];
+ GdkAtom selection_atom;
+ Window selection_owner;
+ GdkDisplay *display;
+ GtkWidget *selection_widget;
+ GdkScreen *screen;
+
+ screen = gdk_screen_get_default ();
+
+ 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,
+ selection_atom));
+ if (selection_owner != None)
+ {
+ g_critical ("Another desktop manager in use; desktop window won't be created");
+ return;
+ }
+
+ 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);
+
+ if (!gtk_selection_owner_set_for_display (display,
+ selection_widget,
+ selection_atom,
+ gdk_x11_get_server_time (gtk_widget_get_window (selection_widget))))
+ {
+ gtk_widget_destroy (selection_widget);
+ g_critical ("Can't set ourselves as selection owner for desktop manager; "
+ "desktop window won't be created");
+ return;
+ }
+
+ g_signal_connect (selection_widget, "selection-get",
+ G_CALLBACK (selection_get_cb), window);
+ g_signal_connect (selection_widget, "selection-clear-event",
+ G_CALLBACK (selection_clear_event_cb), window);
+
+ window->details->desktop_selection = selection_widget;
}
static void
nautilus_desktop_window_constructed (GObject *obj)
{
- AtkObject *accessible;
- NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (obj);
-
- G_OBJECT_CLASS (nautilus_desktop_window_parent_class)->constructed (obj);
-
- /* Initialize the desktop link monitor singleton */
- nautilus_desktop_link_monitor_get ();
-
- /* shouldn't really be needed given our semantic type
- * of _NET_WM_TYPE_DESKTOP, but why not
- */
- gtk_window_set_resizable (GTK_WINDOW (window),
- FALSE);
- gtk_window_set_decorated (GTK_WINDOW (window),
- FALSE);
-
- gtk_window_move (GTK_WINDOW (window), 0, 0);
-
- g_object_set_data (G_OBJECT (window), "is_desktop_window",
- GINT_TO_POINTER (1));
-
- nautilus_desktop_window_init_selection (window);
- nautilus_desktop_window_init_actions (window);
-
- if (window->details->desktop_selection != NULL) {
- /* Set the accessible name so that it doesn't inherit the cryptic desktop URI. */
- accessible = gtk_widget_get_accessible (GTK_WIDGET (window));
-
- if (accessible) {
- atk_object_set_name (accessible, _("Desktop"));
- }
-
- /* Special sawmill setting */
- gtk_window_set_wmclass (GTK_WINDOW (window), "desktop_window", "Nautilus");
-
- /* Point window at the desktop folder.
- * Note that nautilus_desktop_window_init is too early to do this.
- */
- nautilus_desktop_window_update_directory (window);
-
- /* We realize it immediately so that the NAUTILUS_DESKTOP_WINDOW_ID
- * property is set so gnome-settings-daemon doesn't try to set
- * background. And we do a gdk_flush() to be sure X gets it.
- */
- gtk_widget_realize (GTK_WIDGET (window));
- gdk_flush ();
- }
+ AtkObject *accessible;
+ NautilusDesktopWindow *window = NAUTILUS_DESKTOP_WINDOW (obj);
+
+ G_OBJECT_CLASS (nautilus_desktop_window_parent_class)->constructed (obj);
+
+ /* Initialize the desktop link monitor singleton */
+ nautilus_desktop_link_monitor_get ();
+
+ /* shouldn't really be needed given our semantic type
+ * of _NET_WM_TYPE_DESKTOP, but why not
+ */
+ gtk_window_set_resizable (GTK_WINDOW (window),
+ FALSE);
+ gtk_window_set_decorated (GTK_WINDOW (window),
+ FALSE);
+
+ gtk_window_move (GTK_WINDOW (window), 0, 0);
+
+ g_object_set_data (G_OBJECT (window), "is_desktop_window",
+ GINT_TO_POINTER (1));
+
+ nautilus_desktop_window_init_selection (window);
+ nautilus_desktop_window_init_actions (window);
+
+ if (window->details->desktop_selection != NULL)
+ {
+ /* Set the accessible name so that it doesn't inherit the cryptic desktop URI. */
+ accessible = gtk_widget_get_accessible (GTK_WIDGET (window));
+
+ if (accessible)
+ {
+ atk_object_set_name (accessible, _("Desktop"));
+ }
+
+ /* Special sawmill setting */
+ gtk_window_set_wmclass (GTK_WINDOW (window), "desktop_window", "Nautilus");
+
+ /* Point window at the desktop folder.
+ * Note that nautilus_desktop_window_init is too early to do this.
+ */
+ nautilus_desktop_window_update_directory (window);
+
+ /* We realize it immediately so that the NAUTILUS_DESKTOP_WINDOW_ID
+ * property is set so gnome-settings-daemon doesn't try to set
+ * background. And we do a gdk_flush() to be sure X gets it.
+ */
+ gtk_widget_realize (GTK_WIDGET (window));
+ gdk_flush ();
+ }
}
static void
nautilus_desktop_window_init (NautilusDesktopWindow *window)
{
- GtkWidget *widget = GTK_WIDGET (window);
+ GtkWidget *widget = GTK_WIDGET (window);
- window->details = G_TYPE_INSTANCE_GET_PRIVATE (window, NAUTILUS_TYPE_DESKTOP_WINDOW,
- NautilusDesktopWindowDetails);
- gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (window)),
- "nautilus-desktop-window");
+ window->details = G_TYPE_INSTANCE_GET_PRIVATE (window, NAUTILUS_TYPE_DESKTOP_WINDOW,
+ NautilusDesktopWindowDetails);
+ gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (window)),
+ "nautilus-desktop-window");
- window->details->composited = TRUE;
- nautilus_desktop_window_composited_changed (widget);
+ window->details->composited = TRUE;
+ nautilus_desktop_window_composited_changed (widget);
}
static void
nautilus_desktop_window_screen_size_changed (GdkScreen *screen,
- NautilusDesktopWindow *window)
+ NautilusDesktopWindow *window)
{
- int width_request, height_request;
-
- width_request = gdk_screen_get_width (screen);
- height_request = gdk_screen_get_height (screen);
-
- g_object_set (window,
- "width_request", width_request,
- "height_request", height_request,
- NULL);
+ int width_request, height_request;
+
+ width_request = gdk_screen_get_width (screen);
+ height_request = gdk_screen_get_height (screen);
+
+ g_object_set (window,
+ "width_request", width_request,
+ "height_request", height_request,
+ NULL);
}
static NautilusDesktopWindow *
nautilus_desktop_window_new (void)
{
- GdkScreen *screen;
- GApplication *application;
- NautilusDesktopWindow *window;
- int width_request, height_request;
-
- application = g_application_get_default ();
- screen = gdk_screen_get_default ();
- width_request = gdk_screen_get_width (screen);
- height_request = gdk_screen_get_height (screen);
-
- window = g_object_new (NAUTILUS_TYPE_DESKTOP_WINDOW,
- "application", application,
- "disable-chrome", TRUE,
- "width_request", width_request,
- "height_request", height_request,
- NULL);
-
- return window;
+ GdkScreen *screen;
+ GApplication *application;
+ NautilusDesktopWindow *window;
+ int width_request, height_request;
+
+ application = g_application_get_default ();
+ screen = gdk_screen_get_default ();
+ width_request = gdk_screen_get_width (screen);
+ height_request = gdk_screen_get_height (screen);
+
+ window = g_object_new (NAUTILUS_TYPE_DESKTOP_WINDOW,
+ "application", application,
+ "disable-chrome", TRUE,
+ "width_request", width_request,
+ "height_request", height_request,
+ NULL);
+
+ return window;
}
static NautilusDesktopWindow *the_desktop_window = NULL;
@@ -371,148 +383,151 @@ static NautilusDesktopWindow *the_desktop_window = NULL;
void
nautilus_desktop_window_ensure (void)
{
- NautilusDesktopWindow *window;
-
- if (!the_desktop_window) {
- window = nautilus_desktop_window_new ();
- g_object_add_weak_pointer (G_OBJECT (window), (gpointer *) &the_desktop_window);
- the_desktop_window = window;
- }
+ NautilusDesktopWindow *window;
+
+ if (!the_desktop_window)
+ {
+ window = nautilus_desktop_window_new ();
+ g_object_add_weak_pointer (G_OBJECT (window), (gpointer *) &the_desktop_window);
+ the_desktop_window = window;
+ }
}
GtkWidget *
nautilus_desktop_window_get (void)
{
- return GTK_WIDGET (the_desktop_window);
+ return GTK_WIDGET (the_desktop_window);
}
static gboolean
-nautilus_desktop_window_delete_event (GtkWidget *widget,
- GdkEventAny *event)
+nautilus_desktop_window_delete_event (GtkWidget *widget,
+ GdkEventAny *event)
{
- /* Returning true tells GTK+ not to delete the window. */
- return TRUE;
+ /* Returning true tells GTK+ not to delete the window. */
+ return TRUE;
}
static void
map (GtkWidget *widget)
{
- /* Chain up to realize our children */
- GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->map (widget);
- gdk_window_lower (gtk_widget_get_window (widget));
+ /* Chain up to realize our children */
+ GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->map (widget);
+ gdk_window_lower (gtk_widget_get_window (widget));
}
static void
unrealize (GtkWidget *widget)
{
- NautilusDesktopWindow *window;
- NautilusDesktopWindowDetails *details;
+ NautilusDesktopWindow *window;
+ NautilusDesktopWindowDetails *details;
- window = NAUTILUS_DESKTOP_WINDOW (widget);
- details = window->details;
+ window = NAUTILUS_DESKTOP_WINDOW (widget);
+ details = window->details;
- if (details->size_changed_id != 0) {
- g_signal_handler_disconnect (gtk_window_get_screen (GTK_WINDOW (window)),
- details->size_changed_id);
- details->size_changed_id = 0;
- }
+ if (details->size_changed_id != 0)
+ {
+ g_signal_handler_disconnect (gtk_window_get_screen (GTK_WINDOW (window)),
+ details->size_changed_id);
+ details->size_changed_id = 0;
+ }
- gtk_widget_destroy (details->desktop_selection);
+ gtk_widget_destroy (details->desktop_selection);
- GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->unrealize (widget);
+ GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->unrealize (widget);
}
static void
set_wmspec_desktop_hint (GdkWindow *window)
{
- GdkAtom atom;
-
- atom = gdk_atom_intern ("_NET_WM_WINDOW_TYPE_DESKTOP", FALSE);
-
- gdk_property_change (window,
- gdk_atom_intern ("_NET_WM_WINDOW_TYPE", FALSE),
- gdk_x11_xatom_to_atom (XA_ATOM), 32,
- GDK_PROP_MODE_REPLACE, (guchar *) &atom, 1);
+ GdkAtom atom;
+
+ atom = gdk_atom_intern ("_NET_WM_WINDOW_TYPE_DESKTOP", FALSE);
+
+ gdk_property_change (window,
+ gdk_atom_intern ("_NET_WM_WINDOW_TYPE", FALSE),
+ gdk_x11_xatom_to_atom (XA_ATOM), 32,
+ GDK_PROP_MODE_REPLACE, (guchar *) &atom, 1);
}
static void
realize (GtkWidget *widget)
{
- NautilusDesktopWindow *window;
- NautilusDesktopWindowDetails *details;
- GdkVisual *visual;
-
- window = NAUTILUS_DESKTOP_WINDOW (widget);
- details = window->details;
-
- /* Make sure we get keyboard events */
- gtk_widget_set_events (widget, gtk_widget_get_events (widget)
- | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
-
- visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
- if (visual) {
- gtk_widget_set_visual (widget, visual);
- }
-
- /* Do the work of realizing. */
- GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->realize (widget);
-
- /* This is the new way to set up the desktop window */
- set_wmspec_desktop_hint (gtk_widget_get_window (widget));
-
- details->size_changed_id =
- g_signal_connect (gtk_window_get_screen (GTK_WINDOW (window)), "size-changed",
- G_CALLBACK (nautilus_desktop_window_screen_size_changed), window);
+ NautilusDesktopWindow *window;
+ NautilusDesktopWindowDetails *details;
+ GdkVisual *visual;
+
+ window = NAUTILUS_DESKTOP_WINDOW (widget);
+ details = window->details;
+
+ /* Make sure we get keyboard events */
+ gtk_widget_set_events (widget, gtk_widget_get_events (widget)
+ | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK);
+
+ visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
+ if (visual)
+ {
+ gtk_widget_set_visual (widget, visual);
+ }
+
+ /* Do the work of realizing. */
+ GTK_WIDGET_CLASS (nautilus_desktop_window_parent_class)->realize (widget);
+
+ /* This is the new way to set up the desktop window */
+ set_wmspec_desktop_hint (gtk_widget_get_window (widget));
+
+ details->size_changed_id =
+ g_signal_connect (gtk_window_get_screen (GTK_WINDOW (window)), "size-changed",
+ G_CALLBACK (nautilus_desktop_window_screen_size_changed), window);
}
static void
-real_sync_title (NautilusWindow *window,
- NautilusWindowSlot *slot)
+real_sync_title (NautilusWindow *window,
+ NautilusWindowSlot *slot)
{
- /* hardcode "Desktop" */
- gtk_window_set_title (GTK_WINDOW (window), _("Desktop"));
+ /* hardcode "Desktop" */
+ gtk_window_set_title (GTK_WINDOW (window), _("Desktop"));
}
static void
real_window_close (NautilusWindow *window)
{
- /* stub, does nothing */
- return;
+ /* stub, does nothing */
+ return;
}
static NautilusWindowSlot *
real_create_slot (NautilusWindow *window,
GFile *location)
{
- return NAUTILUS_WINDOW_SLOT (nautilus_desktop_window_slot_new (window));
+ return NAUTILUS_WINDOW_SLOT (nautilus_desktop_window_slot_new (window));
}
static void
nautilus_desktop_window_class_init (NautilusDesktopWindowClass *klass)
{
- GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass);
- NautilusWindowClass *nclass = NAUTILUS_WINDOW_CLASS (klass);
- GObjectClass *oclass = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass);
+ NautilusWindowClass *nclass = NAUTILUS_WINDOW_CLASS (klass);
+ GObjectClass *oclass = G_OBJECT_CLASS (klass);
- oclass->constructed = nautilus_desktop_window_constructed;
- oclass->finalize = nautilus_desktop_window_finalize;
+ oclass->constructed = nautilus_desktop_window_constructed;
+ oclass->finalize = nautilus_desktop_window_finalize;
- wclass->realize = realize;
- wclass->unrealize = unrealize;
- wclass->map = map;
- wclass->delete_event = nautilus_desktop_window_delete_event;
- wclass->composited_changed = nautilus_desktop_window_composited_changed;
- wclass->draw = nautilus_desktop_window_draw;
+ wclass->realize = realize;
+ wclass->unrealize = unrealize;
+ wclass->map = map;
+ wclass->delete_event = nautilus_desktop_window_delete_event;
+ wclass->composited_changed = nautilus_desktop_window_composited_changed;
+ wclass->draw = nautilus_desktop_window_draw;
- nclass->sync_title = real_sync_title;
- nclass->close = real_window_close;
- nclass->create_slot = real_create_slot;
+ nclass->sync_title = real_sync_title;
+ nclass->close = real_window_close;
+ nclass->create_slot = real_create_slot;
- g_type_class_add_private (klass, sizeof (NautilusDesktopWindowDetails));
+ g_type_class_add_private (klass, sizeof (NautilusDesktopWindowDetails));
}
gboolean
nautilus_desktop_window_loaded (NautilusDesktopWindow *window)
{
- return window->details->loaded;
+ return window->details->loaded;
}