[gimp] app: Update docks with new context when switching to window modes
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] app: Update docks with new context when switching to window modes
- Date: Wed, 6 Jan 2010 12:33:19 +0000 (UTC)
commit 3015b0d0d020831af2a91cfcadc9b11a616eec2c
Author: Martin Nordholts <martinn src gnome org>
Date: Wed Jan 6 13:33:47 2010 +0100
app: Update docks with new context when switching to window modes
When moving dockables from a dock window to an image window, they need
to start listening to the user context. So update the dockables with
the new context when we switch window mode.
app/widgets/gimpdock.c | 23 +++++++++++++++++++++++
app/widgets/gimpdock.h | 2 ++
app/widgets/gimpdockbook.c | 26 ++++++++++++++++++++++++++
app/widgets/gimpdockbook.h | 2 ++
app/widgets/gimpdockcolumns.c | 4 ++++
5 files changed, 57 insertions(+), 0 deletions(-)
---
diff --git a/app/widgets/gimpdock.c b/app/widgets/gimpdock.c
index eed6a07..b297fa4 100644
--- a/app/widgets/gimpdock.c
+++ b/app/widgets/gimpdock.c
@@ -374,6 +374,29 @@ gimp_dock_invalidate_geometry (GimpDock *dock)
}
/**
+ * gimp_dock_update_with_context:
+ * @dock:
+ * @context:
+ *
+ * Set the @context on all dockables in the @dock.
+ **/
+void
+gimp_dock_update_with_context (GimpDock *dock,
+ GimpContext *context)
+{
+ GList *iter = NULL;
+
+ for (iter = gimp_dock_get_dockbooks (dock);
+ iter;
+ iter = g_list_next (iter))
+ {
+ GimpDockbook *dockbook = GIMP_DOCKBOOK (iter->data);
+
+ gimp_dockbook_update_with_context (dockbook, context);
+ }
+}
+
+/**
* gimp_dock_get_context:
* @dock:
*
diff --git a/app/widgets/gimpdock.h b/app/widgets/gimpdock.h
index 6077f4e..1aa5795 100644
--- a/app/widgets/gimpdock.h
+++ b/app/widgets/gimpdock.h
@@ -71,6 +71,8 @@ void gimp_dock_invalidate_title (GimpDock *dock);
void gimp_dock_set_host_geometry_hints (GimpDock *dock,
GtkWindow *window);
void gimp_dock_invalidate_geometry (GimpDock *dock);
+void gimp_dock_update_with_context (GimpDock *dock,
+ GimpContext *context);
GimpContext * gimp_dock_get_context (GimpDock *dock);
GimpDialogFactory * gimp_dock_get_dialog_factory (GimpDock *dock);
GimpUIManager * gimp_dock_get_ui_manager (GimpDock *dock);
diff --git a/app/widgets/gimpdockbook.c b/app/widgets/gimpdockbook.c
index 3f7d1d3..55bc9df 100644
--- a/app/widgets/gimpdockbook.c
+++ b/app/widgets/gimpdockbook.c
@@ -545,6 +545,32 @@ gimp_dockbook_remove (GimpDockbook *dockbook,
g_list_free (children);
}
+/**
+ * gimp_dockbook_update_with_context:
+ * @dockbook:
+ * @context:
+ *
+ * Set @context on all dockables in @dockbook.
+ **/
+void
+gimp_dockbook_update_with_context (GimpDockbook *dockbook,
+ GimpContext *context)
+{
+ GList *children = gtk_container_get_children (GTK_CONTAINER (dockbook));
+ GList *iter = NULL;
+
+ for (iter = children;
+ iter;
+ iter = g_list_next (iter))
+ {
+ GimpDockable *dockable = GIMP_DOCKABLE (iter->data);
+
+ gimp_dockable_set_context (dockable, context);
+ }
+
+ g_list_free (children);
+}
+
GtkWidget *
gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
GimpDockable *dockable)
diff --git a/app/widgets/gimpdockbook.h b/app/widgets/gimpdockbook.h
index fd3ba73..f43b680 100644
--- a/app/widgets/gimpdockbook.h
+++ b/app/widgets/gimpdockbook.h
@@ -70,6 +70,8 @@ void gimp_dockbook_add (GimpDockbook *dockbo
gint position);
void gimp_dockbook_remove (GimpDockbook *dockbook,
GimpDockable *dockable);
+void gimp_dockbook_update_with_context (GimpDockbook *dockbook,
+ GimpContext *context);
GtkWidget * gimp_dockbook_create_tab_widget (GimpDockbook *dockbook,
GimpDockable *dockable);
gboolean gimp_dockbook_drop_dockable (GimpDockbook *dockbook,
diff --git a/app/widgets/gimpdockcolumns.c b/app/widgets/gimpdockcolumns.c
index 18d78cd..ef316c6 100644
--- a/app/widgets/gimpdockcolumns.c
+++ b/app/widgets/gimpdockcolumns.c
@@ -202,6 +202,8 @@ gimp_dock_columns_add_dock (GimpDockColumns *dock_columns,
dock_columns->p->docks = g_list_append (dock_columns->p->docks, dock);
+ gimp_dock_update_with_context (dock, dock_columns->p->context);
+
gimp_paned_box_add_widget (GIMP_PANED_BOX (dock_columns->p->paned_hbox),
GTK_WIDGET (dock),
index);
@@ -226,6 +228,8 @@ gimp_dock_columns_remove_dock (GimpDockColumns *dock_columns,
dock_columns->p->docks = g_list_remove (dock_columns->p->docks, dock);
+ gimp_dock_update_with_context (dock, NULL);
+
g_signal_handlers_disconnect_by_func (dock,
gimp_dock_columns_dock_book_removed,
dock_columns);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]