/* nemo_window_slot_update_icon: * * Re-calculate the slot icon * Called when the location or view or icon set has changed. * @slot: The NemoWindowSlot in question. */ void nemo_window_slot_update_icon (NemoWindowSlot *slot) { NemoWindow *window; NemoIconInfo *info; const char *icon_name; GdkPixbuf *pixbuf; window = nemo_window_slot_get_window (slot); info = NEMO_WINDOW_CLASS (G_OBJECT_GET_CLASS (window))->get_icon (window, slot); icon_name = NULL; if (info) { icon_name = nemo_icon_info_get_used_name (info); if (icon_name != NULL) { /* Gtk+ doesn't short circuit this (yet), so avoid lots of work * if we're setting to the same icon. This happens a lot e.g. when * the trash directory changes due to the file count changing. */ if (g_strcmp0 (icon_name, gtk_window_get_icon_name (GTK_WINDOW (window))) != 0) { gtk_window_set_icon_name (GTK_WINDOW (window), icon_name); } } else { pixbuf = nemo_icon_info_get_pixbuf_nodefault (info); if (pixbuf) { gtk_window_set_icon (GTK_WINDOW (window), pixbuf); g_object_unref (pixbuf); } } g_object_unref (info); } }
static void nemo_desktop_window_class_init (NemoDesktopWindowClass *klass) { GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); NemoWindowClass *nclass = NEMO_WINDOW_CLASS (klass); GObjectClass *oclass = G_OBJECT_CLASS (klass); oclass->constructed = nemo_desktop_window_constructed; oclass->dispose = nemo_desktop_window_dispose; oclass->set_property = nemo_desktop_window_set_property; oclass->get_property = nemo_desktop_window_get_property; wclass->realize = realize; wclass->unrealize = unrealize; wclass->map = map; wclass->delete_event = nemo_desktop_window_delete_event; nclass->sync_title = real_sync_title; nclass->get_icon = real_get_icon; nclass->close = real_window_close; properties[PROP_MONITOR] = g_param_spec_int ("monitor", "Monitor number", "The monitor number this window is assigned to", G_MININT, G_MAXINT, 0, G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); g_type_class_add_private (klass, sizeof (NemoDesktopWindowDetails)); g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); }
static void nemo_desktop_window_class_init (NemoDesktopWindowClass *klass) { GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); NemoWindowClass *nclass = NEMO_WINDOW_CLASS (klass); GObjectClass *oclass = G_OBJECT_CLASS (klass); oclass->constructed = nemo_desktop_window_constructed; oclass->dispose = nemo_desktop_window_dispose; wclass->realize = realize; wclass->unrealize = unrealize; wclass->map = map; nclass->sync_title = real_sync_title; nclass->get_icon = real_get_icon; nclass->close = real_window_close; g_type_class_add_private (klass, sizeof (NemoDesktopWindowDetails)); }