diff options
Diffstat (limited to 'libmdock/mdock-widget.c')
-rw-r--r-- | libmdock/mdock-widget.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/libmdock/mdock-widget.c b/libmdock/mdock-widget.c index cdb942e..6507fbb 100644 --- a/libmdock/mdock-widget.c +++ b/libmdock/mdock-widget.c @@ -33,6 +33,7 @@ #include <zeitgeist.h> #endif +#define POPUP_MOVE_TIMEOUT 100 #define POPUP_SHOW_TIMEOUT 200 #define POPUP_HIDE_TIMEOUT 500 @@ -413,7 +414,8 @@ static gboolean handle_popup_timer(gpointer user_data) MDockWidget *self = MDOCK_WIDGET(user_data); if (self->priv->current_popup_item) { hide_item_popup(self); - } else if (self->priv->current_pointed_item) { + } + if (self->priv->current_pointed_item) { show_item_popup(self, self->priv->current_pointed_item); } @@ -423,16 +425,14 @@ static gboolean handle_popup_timer(gpointer user_data) static gboolean handle_item_enter(MDockWidget *self, GdkEventCrossing *event, MDockItem *item) { - g_debug("Item enter"); + g_warn_if_fail(!self->priv->current_pointed_item); self->priv->current_pointed_item = item; if (self->priv->current_popup_item) { if (self->priv->popup_timer) { g_source_remove(self->priv->popup_timer); self->priv->popup_timer = 0; } - hide_item_popup(self); - show_item_popup(self, item); - + self->priv->popup_timer = g_timeout_add(POPUP_MOVE_TIMEOUT, handle_popup_timer, self); } else if (!self->priv->popup_timer) { self->priv->popup_timer = g_timeout_add(POPUP_SHOW_TIMEOUT, handle_popup_timer, self); } @@ -441,7 +441,6 @@ static gboolean handle_item_enter(MDockWidget *self, GdkEventCrossing *event, MD static gboolean handle_item_leave(MDockWidget *self, GdkEventCrossing *event, MDockItem *item) { - g_debug("Item leave"); g_warn_if_fail(self->priv->current_pointed_item == item); g_warn_if_fail(!self->priv->current_popup_item || self->priv->current_pointed_item == item); self->priv->current_pointed_item = NULL; @@ -454,7 +453,7 @@ static gboolean handle_item_leave(MDockWidget *self, GdkEventCrossing *event, MD static gboolean handle_item_selector_enter(MDockWidget *self, GdkEventCrossing *event, MDockItemWindowSelector *selector) { g_debug("Item selector enter %d", event->detail); - if (event->detail != GDK_NOTIFY_NONLINEAR) return FALSE; + if (event->detail == GDK_NOTIFY_INFERIOR) return FALSE; g_warn_if_fail(self->priv->current_popup_item); if (self->priv->popup_timer) { g_source_remove(self->priv->popup_timer); @@ -466,7 +465,7 @@ static gboolean handle_item_selector_enter(MDockWidget *self, GdkEventCrossing * static gboolean handle_item_selector_leave(MDockWidget *self, GdkEventCrossing *event, MDockItemWindowSelector *selector) { g_debug("Item selector leave %d", event->detail); - if (event->detail != GDK_NOTIFY_NONLINEAR) return FALSE; + if (event->detail == GDK_NOTIFY_INFERIOR) return FALSE; g_warn_if_fail(self->priv->current_popup_item); if (!self->priv->popup_timer) { self->priv->popup_timer = g_timeout_add(POPUP_HIDE_TIMEOUT, handle_popup_timer, self); @@ -815,7 +814,17 @@ static void mdock_widget_class_init(MDockWidgetClass *klass) g_type_class_add_private(klass, sizeof(MDockWidgetPrivate)); } +gint mdock_widget_get_n_items(MDockWidget *self) +{ + return g_sequence_get_length(self->priv->items); +} + GtkWidget *mdock_widget_new(void) { return GTK_WIDGET(g_object_new(MDOCK_TYPE_WIDGET, NULL)); } + +GtkWidget *mdock_widget_new_with_settings_path(const gchar *path) +{ + return GTK_WIDGET(g_object_new(MDOCK_TYPE_WIDGET, "settings-path", path, NULL)); +} |