diff options
Diffstat (limited to 'libmdock/mdock-item.c')
-rw-r--r-- | libmdock/mdock-item.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/libmdock/mdock-item.c b/libmdock/mdock-item.c index 1d899c0..67f581f 100644 --- a/libmdock/mdock-item.c +++ b/libmdock/mdock-item.c @@ -19,7 +19,6 @@ #include "mdock-enums.h" #include "mdock-item.h" -#include "thumbnailer.h" #define MDOCK_ITEM_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), MDOCK_TYPE_ITEM, MDockItemPrivate)) @@ -42,6 +41,7 @@ enum { PROP_DESKTOP_APP_INFO, PROP_ICON_SIZE, PROP_N_WINDOWS, + PROP_DISPLAY_NAME, N_PROPERTIES }; @@ -73,18 +73,6 @@ static GdkPixbuf *mdock_item_load_icon(MDockItem *self, guint icon_size) return NULL; } -static const gchar *mdock_item_get_display_name(MDockItem *self) -{ - if (self->priv->appinfo) { - return g_app_info_get_display_name(G_APP_INFO(self->priv->appinfo)); - } else if (self->priv->windows) { - WnckApplication *app = wnck_window_get_application(self->priv->windows->data); - return wnck_application_get_name(app); - } else { - return NULL; - } -} - static void mdock_item_update_icon(MDockItem *self) { g_clear_object(&self->priv->icon); @@ -189,6 +177,9 @@ static void mdock_item_get_property(GObject *object, case PROP_N_WINDOWS: g_value_set_uint(value, g_list_length(self->priv->windows)); break; + case PROP_DISPLAY_NAME: + g_value_set_string(value, mdock_item_get_display_name(self)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; @@ -216,7 +207,8 @@ static void mdock_item_init(MDockItem *self) self->priv->pinned = FALSE; self->priv->icon_size = 48; - gtk_widget_add_events(GTK_WIDGET(self), GDK_BUTTON_PRESS_MASK); + gtk_widget_add_events(GTK_WIDGET(self), + GDK_BUTTON_PRESS_MASK | GDK_ENTER_NOTIFY_MASK | GDK_LEAVE_NOTIFY_MASK); } static void @@ -260,6 +252,12 @@ mdock_item_class_init(MDockItemClass *klass) 0, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + obj_properties[PROP_DISPLAY_NAME] = g_param_spec_string("display-name", + "Name of this item", + "Reads the current name of this item", + "", + G_PARAM_READABLE | G_PARAM_STATIC_STRINGS); + g_object_class_install_properties(obj_class, N_PROPERTIES, obj_properties); g_type_class_add_private (obj_class, sizeof (MDockItemPrivate)); @@ -287,7 +285,7 @@ void mdock_item_toggle_pinned(MDockItem *self) GDesktopAppInfo *mdock_item_get_desktop_app_info(MDockItem *self) { - return g_object_ref(self->priv->appinfo); + return self->priv->appinfo; } void mdock_item_set_desktop_app_info(MDockItem *self, GDesktopAppInfo *app_info) @@ -323,6 +321,18 @@ void mdock_item_launch(MDockItem *self) } } +const gchar *mdock_item_get_display_name(MDockItem *self) +{ + if (self->priv->appinfo) { + return g_app_info_get_display_name(G_APP_INFO(self->priv->appinfo)); + } else if (self->priv->windows) { + WnckApplication *app = wnck_window_get_application(self->priv->windows->data); + return wnck_application_get_name(app); + } else { + return NULL; + } +} + GdkPixbuf *mdock_item_get_icon_pixbuf(MDockItem *self) { return self->priv->icon; @@ -330,7 +340,6 @@ GdkPixbuf *mdock_item_get_icon_pixbuf(MDockItem *self) void mdock_item_add_window(MDockItem *self, WnckWindow *window) { - thumbnailer_enable_for_window(window); self->priv->windows = g_list_append(self->priv->windows, window); if (!self->priv->icon) { mdock_item_update_icon(self); @@ -351,7 +360,6 @@ void mdock_item_set_last_active_window(MDockItem *self, WnckWindow *window) { g_return_if_fail(g_list_find(self->priv->windows, window)); self->priv->last_active = window; - thumbnailer_update_thumbnail(window); } gint mdock_item_get_num_windows(MDockItem *self) |