[gdl] Consider iconified widget as closed
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gdl] Consider iconified widget as closed
- Date: Fri, 3 Aug 2012 17:14:37 +0000 (UTC)
commit a43a203909a8ba54ac2534b0b811bc047d6f8b86
Author: SÃbastien Granjoux <seb sfo free fr>
Date: Fri Aug 3 09:59:19 2012 +0200
Consider iconified widget as closed
It allows to manage the flag GDL_DOCK_ATTACHED in the GtkWidget hide and show
functions. We don't need to hide a widget without clearing this flag. It means
that an iconified widget cannot be closed or not, it is always closed so there
are 3 states for a dock item: normal, iconified, closed (including detached).
gdl/gdl-dock-bar.c | 4 ++--
gdl/gdl-dock-item-grip.c | 2 +-
gdl/gdl-dock-item.c | 6 +-----
gdl/gdl-dock-item.h | 6 +++---
gdl/gdl-dock-object.c | 2 ++
gdl/gdl-dock.c | 4 ----
6 files changed, 9 insertions(+), 15 deletions(-)
---
diff --git a/gdl/gdl-dock-bar.c b/gdl/gdl-dock-bar.c
index 7547b46..cda5758 100644
--- a/gdl/gdl-dock-bar.c
+++ b/gdl/gdl-dock-bar.c
@@ -383,7 +383,7 @@ update_dock_items (GdlDockBar *dockbar, gboolean full_update)
gdl_dock_bar_remove_item (dockbar, item);
else if (g_slist_index (dockbar->priv->items, item) == -1 &&
GDL_DOCK_ITEM_ICONIFIED (item) &&
- !gdl_dock_item_is_closed (item))
+ !gdl_dock_item_is_placeholder (item))
gdl_dock_bar_add_item (dockbar, item);
}
} else {
@@ -393,7 +393,7 @@ update_dock_items (GdlDockBar *dockbar, gboolean full_update)
if (g_slist_index (dockbar->priv->items, item) != -1)
gdl_dock_bar_remove_item (dockbar, item);
if (GDL_DOCK_ITEM_ICONIFIED (item) &&
- !gdl_dock_item_is_closed (item))
+ !gdl_dock_item_is_placeholder (item))
gdl_dock_bar_add_item (dockbar, item);
}
}
diff --git a/gdl/gdl-dock-item-grip.c b/gdl/gdl-dock-item-grip.c
index 8ea8e36..bba4431 100644
--- a/gdl/gdl-dock-item-grip.c
+++ b/gdl/gdl-dock-item-grip.c
@@ -313,7 +313,7 @@ gdl_dock_item_grip_iconify_clicked (GtkWidget *widget,
for (node = items; node != NULL; node = node->next)
{
GdlDockItem *item = GDL_DOCK_ITEM (node->data);
- if (!GDL_DOCK_ITEM_CANT_ICONIFY (item))
+ if (!GDL_DOCK_ITEM_CANT_ICONIFY (item) && !gdl_dock_item_is_closed (item))
gdl_dock_item_iconify_item (item);
}
g_list_free (items);
diff --git a/gdl/gdl-dock-item.c b/gdl/gdl-dock-item.c
index 779b2e9..52c5c06 100644
--- a/gdl/gdl-dock-item.c
+++ b/gdl/gdl-dock-item.c
@@ -739,10 +739,8 @@ gdl_dock_item_set_property (GObject *g_object,
break;
case PROP_CLOSED:
if (g_value_get_boolean (value)) {
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_ATTACHED);
gtk_widget_hide (GTK_WIDGET (item));
} else {
- GDL_DOCK_OBJECT_SET_FLAGS (item, GDL_DOCK_ATTACHED);
if (!GDL_DOCK_ITEM_ICONIFIED (item) && !gdl_dock_item_is_placeholder (item))
gtk_widget_show (GTK_WIDGET (item));
}
@@ -2226,13 +2224,12 @@ gdl_dock_item_unbind (GdlDockItem *item)
* are hidden they are not removed from the layout.
*
* The dock item close button causes the panel to be hidden.
- **/
+ */
void
gdl_dock_item_hide_item (GdlDockItem *item)
{
g_return_if_fail (item != NULL);
- GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_ATTACHED);
gtk_widget_hide (GTK_WIDGET (item));
return;
}
@@ -2293,7 +2290,6 @@ gdl_dock_item_show_item (GdlDockItem *item)
}
GDL_DOCK_OBJECT_UNSET_FLAGS (item, GDL_DOCK_ICONIFIED);
- GDL_DOCK_OBJECT_SET_FLAGS (item, GDL_DOCK_ATTACHED);
gtk_widget_show (GTK_WIDGET (item));
return;
diff --git a/gdl/gdl-dock-item.h b/gdl/gdl-dock-item.h
index 6c10c76..ccf3bfb 100644
--- a/gdl/gdl-dock-item.h
+++ b/gdl/gdl-dock-item.h
@@ -301,11 +301,11 @@ void gdl_dock_item_bind (GdlDockItem *item,
void gdl_dock_item_unbind (GdlDockItem *item);
-void gdl_dock_item_hide_item (GdlDockItem *item);
+void gdl_dock_item_hide_item (GdlDockItem *item);
void gdl_dock_item_iconify_item (GdlDockItem *item);
-void gdl_dock_item_show_item (GdlDockItem *item);
+void gdl_dock_item_show_item (GdlDockItem *item);
void gdl_dock_item_lock (GdlDockItem *item);
@@ -321,7 +321,7 @@ gboolean gdl_dock_item_or_child_has_focus (GdlDockItem *item);
gboolean gdl_dock_item_is_placeholder (GdlDockItem *item);
-gboolean gdl_dock_item_is_closed (GdlDockItem *item);
+gboolean gdl_dock_item_is_closed (GdlDockItem *item);
G_END_DECLS
diff --git a/gdl/gdl-dock-object.c b/gdl/gdl-dock-object.c
index 15f7a6b..d3c2ef8 100644
--- a/gdl/gdl-dock-object.c
+++ b/gdl/gdl-dock-object.c
@@ -419,6 +419,7 @@ gdl_dock_object_foreach_automatic (GdlDockObject *object,
static void
gdl_dock_object_show (GtkWidget *widget)
{
+ GDL_DOCK_OBJECT_SET_FLAGS (widget, GDL_DOCK_ATTACHED);
GTK_WIDGET_CLASS (gdl_dock_object_parent_class)->show (widget);
/* Update visibility of automatic parents */
@@ -428,6 +429,7 @@ gdl_dock_object_show (GtkWidget *widget)
static void
gdl_dock_object_hide (GtkWidget *widget)
{
+ GDL_DOCK_OBJECT_UNSET_FLAGS (widget, GDL_DOCK_ATTACHED);
GTK_WIDGET_CLASS (gdl_dock_object_parent_class)->hide (widget);
/* Update visibility of automatic parents */
diff --git a/gdl/gdl-dock.c b/gdl/gdl-dock.c
index 25675ca..6269d8e 100644
--- a/gdl/gdl-dock.c
+++ b/gdl/gdl-dock.c
@@ -398,7 +398,6 @@ gdl_dock_constructor (GType type,
G_CALLBACK (gdl_dock_floating_window_delete_event_cb),
NULL);
}
- GDL_DOCK_OBJECT_SET_FLAGS (dock, GDL_DOCK_ATTACHED);
}
return g_object;
@@ -780,7 +779,6 @@ gdl_dock_remove (GtkContainer *container,
if (GTK_WIDGET (dock->root) == widget) {
dock->root = NULL;
- GDL_DOCK_OBJECT_UNSET_FLAGS (widget, GDL_DOCK_ATTACHED);
gtk_widget_unparent (widget);
if (was_visible && gtk_widget_get_visible (GTK_WIDGET (container)))
@@ -822,7 +820,6 @@ gdl_dock_detach (GdlDockObject *object,
if (recursive && dock->root) {
gdl_dock_object_detach (dock->root, recursive);
}
- GDL_DOCK_OBJECT_UNSET_FLAGS (object, GDL_DOCK_ATTACHED);
}
static void
@@ -978,7 +975,6 @@ gdl_dock_dock (GdlDockObject *object,
GtkWidget *widget = GTK_WIDGET (requestor);
dock->root = requestor;
- GDL_DOCK_OBJECT_SET_FLAGS (requestor, GDL_DOCK_ATTACHED);
gtk_widget_set_parent (widget, GTK_WIDGET (dock));
gdl_dock_item_show_grip (GDL_DOCK_ITEM (requestor));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]