diff --git a/app/gui/gimpuiconfigurer.c b/app/gui/gimpuiconfigurer.c index 0b988dec79..2aad4d15fb 100644 --- a/app/gui/gimpuiconfigurer.c +++ b/app/gui/gimpuiconfigurer.c @@ -30,6 +30,7 @@ #include "widgets/gimpdialogfactory.h" #include "widgets/gimpdock.h" #include "widgets/gimpdockcolumns.h" +#include "widgets/gimpdockcontainer.h" #include "widgets/gimpdockwindow.h" #include "widgets/gimptoolbox.h" @@ -164,16 +165,18 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer *ui_configurer, for (dialog_iter = dialogs; dialog_iter; dialog_iter = dialog_iter->next) { - GimpDockWindow *dock_window = NULL; - GList *docks = NULL; - GList *dock_iter = NULL; + GimpDockWindow *dock_window = NULL; + GimpDockContainer *dock_container = NULL; + GList *docks = NULL; + GList *dock_iter = NULL; if (!GIMP_IS_DOCK_WINDOW (dialog_iter->data)) continue; - dock_window = GIMP_DOCK_WINDOW (dialog_iter->data); + dock_window = GIMP_DOCK_WINDOW (dialog_iter->data); + dock_container = GIMP_DOCK_CONTAINER (dock_window); - docks = g_list_copy (gimp_dock_window_get_docks (dock_window)); + docks = g_list_copy (gimp_dock_container_get_docks (dock_container)); for (dock_iter = docks; dock_iter; dock_iter = dock_iter->next) { GimpDock *dock = GIMP_DOCK (dock_iter->data); @@ -200,7 +203,7 @@ gimp_ui_configurer_move_docks_to_columns (GimpUIConfigurer *ui_configurer, * destroyed */ if (GTK_IS_WIDGET (dock_window) && - g_list_length (gimp_dock_window_get_docks (dock_window)) == 0) + g_list_length (gimp_dock_container_get_docks (dock_container)) == 0) { gimp_dialog_factory_remove_dialog (gimp_dialog_factory_get_singleton (), GTK_WIDGET (dock_window)); diff --git a/app/tests/test-ui.c b/app/tests/test-ui.c index 7a2c908f55..60ee3a5901 100644 --- a/app/tests/test-ui.c +++ b/app/tests/test-ui.c @@ -38,6 +38,7 @@ #include "widgets/gimpdock.h" #include "widgets/gimpdockable.h" #include "widgets/gimpdockbook.h" +#include "widgets/gimpdockcontainer.h" #include "widgets/gimpdocked.h" #include "widgets/gimpdockwindow.h" #include "widgets/gimphelp-ids.h" @@ -734,15 +735,17 @@ gimp_ui_not_toolbox_window (GObject *object) static gboolean gimp_ui_multicolumn_not_toolbox_window (GObject *object) { - GimpDockWindow *dock_window = GIMP_DOCK_WINDOW (object); + GimpDockWindow *dock_window; + GimpDockContainer *dock_container; if (! GIMP_IS_DOCK_WINDOW (object)) return FALSE; - dock_window = GIMP_DOCK_WINDOW (object); + dock_window = GIMP_DOCK_WINDOW (object); + dock_container = GIMP_DOCK_CONTAINER (object); return (! gimp_dock_window_has_toolbox (dock_window) && - g_list_length (gimp_dock_window_get_docks (dock_window)) > 1); + g_list_length (gimp_dock_container_get_docks (dock_container)) > 1); } static gboolean diff --git a/app/widgets/gimpdockwindow.c b/app/widgets/gimpdockwindow.c index 44779340ef..5f161b6284 100644 --- a/app/widgets/gimpdockwindow.c +++ b/app/widgets/gimpdockwindow.c @@ -48,6 +48,7 @@ #include "gimpdock.h" #include "gimpdockbook.h" #include "gimpdockcolumns.h" +#include "gimpdockcontainer.h" #include "gimpdockwindow.h" #include "gimphelp-ids.h" #include "gimpmenufactory.h" @@ -108,6 +109,9 @@ struct _GimpDockWindowPrivate }; +static void gimp_dock_window_dock_container_iface_init + (GimpDockContainerInterface + *iface); static void gimp_dock_window_constructed (GObject *object); static void gimp_dock_window_dispose (GObject *object); static void gimp_dock_window_finalize (GObject *object); @@ -124,6 +128,8 @@ static void gimp_dock_window_style_set (GtkWidget *widg GtkStyle *prev_style); static gboolean gimp_dock_window_delete_event (GtkWidget *widget, GdkEventAny *event); +static GList * gimp_dock_window_get_docks (GimpDockContainer + *dock_container); static gboolean gimp_dock_window_should_add_to_recent (GimpDockWindow *dock_window); static void gimp_dock_window_display_changed (GimpDockWindow *dock_window, @@ -152,7 +158,9 @@ static void gimp_dock_window_auto_clicked (GtkWidget *widg GimpDock *dock); -G_DEFINE_TYPE (GimpDockWindow, gimp_dock_window, GIMP_TYPE_WINDOW) +G_DEFINE_TYPE_WITH_CODE (GimpDockWindow, gimp_dock_window, GIMP_TYPE_WINDOW, + G_IMPLEMENT_INTERFACE (GIMP_TYPE_DOCK_CONTAINER, + gimp_dock_window_dock_container_iface_init)) #define parent_class gimp_dock_window_parent_class @@ -253,6 +261,12 @@ gimp_dock_window_init (GimpDockWindow *dock_window) gtk_window_set_focus_on_map (GTK_WINDOW (dock_window), FALSE); } +static void +gimp_dock_window_dock_container_iface_init (GimpDockContainerInterface *iface) +{ + iface->get_docks = gimp_dock_window_get_docks; +} + static void gimp_dock_window_constructed (GObject *object) { @@ -668,6 +682,25 @@ gimp_dock_window_delete_event (GtkWidget *widget, return FALSE; } +/** + * gimp_dock_window_get_docks: + * + * Get a list of docks in the dock window. + * + * Returns: + **/ +static GList * +gimp_dock_window_get_docks (GimpDockContainer *dock_container) +{ + GimpDockWindow *dock_window; + + g_return_val_if_fail (GIMP_IS_DOCK_WINDOW (dock_container), NULL); + + dock_window = GIMP_DOCK_WINDOW (dock_container); + + return gimp_dock_columns_get_docks (dock_window->p->dock_columns); +} + /** * gimp_dock_window_should_add_to_recent: * @dock_window: @@ -680,9 +713,11 @@ gimp_dock_window_delete_event (GtkWidget *widget, static gboolean gimp_dock_window_should_add_to_recent (GimpDockWindow *dock_window) { - GList *docks = gimp_dock_window_get_docks (dock_window); + GList *docks; gboolean should_add = TRUE; + docks = gimp_dock_container_get_docks (GIMP_DOCK_CONTAINER (dock_window)); + if (g_list_length (docks) < 1) { should_add = FALSE; @@ -763,7 +798,7 @@ gimp_dock_window_get_description (GimpDockWindow *dock_window, GString *complete_desc = g_string_new (NULL); GList *iter = NULL; - for (iter = gimp_dock_window_get_docks (dock_window); + for (iter = gimp_dock_container_get_docks (GIMP_DOCK_CONTAINER (dock_window)); iter; iter = g_list_next (iter)) { @@ -1005,22 +1040,6 @@ gimp_dock_window_get_dialog_factory (GimpDockWindow *dock_window) return dock_window->p->dialog_factory; } -/** - * gimp_dock_window_get_docks: - * @dock_window: - * - * Get a list of docks in the dock window. - * - * Returns: - **/ -GList * -gimp_dock_window_get_docks (GimpDockWindow *dock_window) -{ - g_return_val_if_fail (GIMP_IS_DOCK_WINDOW (dock_window), NULL); - - return gimp_dock_columns_get_docks (dock_window->p->dock_columns); -} - gboolean gimp_dock_window_get_auto_follow_active (GimpDockWindow *dock_window) { diff --git a/app/widgets/gimpdockwindow.h b/app/widgets/gimpdockwindow.h index 29c8411fe1..22a918da0d 100644 --- a/app/widgets/gimpdockwindow.h +++ b/app/widgets/gimpdockwindow.h @@ -70,7 +70,6 @@ void gimp_dock_window_remove_dock (GimpDockWindow * GimpUIManager * gimp_dock_window_get_ui_manager (GimpDockWindow *dock_window); GimpContext * gimp_dock_window_get_context (GimpDockWindow *dock); GimpDialogFactory * gimp_dock_window_get_dialog_factory (GimpDockWindow *dock); -GList * gimp_dock_window_get_docks (GimpDockWindow *dock_window); gboolean gimp_dock_window_get_auto_follow_active (GimpDockWindow *menu_dock); void gimp_dock_window_set_auto_follow_active (GimpDockWindow *menu_dock, gboolean show); diff --git a/app/widgets/gimpsessioninfo.c b/app/widgets/gimpsessioninfo.c index ad9d0c2e8c..60335795a8 100644 --- a/app/widgets/gimpsessioninfo.c +++ b/app/widgets/gimpsessioninfo.c @@ -30,6 +30,8 @@ #include "config/gimpguiconfig.h" +#include "widgets/gimpdockcontainer.h" + #include "core/gimp.h" #include "core/gimpcontext.h" @@ -740,11 +742,12 @@ gimp_session_info_get_info (GimpSessionInfo *info) info->p->aux_info = gimp_session_info_aux_get_list (info->p->widget); - if (GIMP_IS_DOCK_WINDOW (info->p->widget)) + if (GIMP_IS_DOCK_CONTAINER (info->p->widget)) { - GList *iter = NULL; + GimpDockContainer *dock_container = GIMP_DOCK_CONTAINER (info->p->widget); + GList *iter = NULL; - for (iter = gimp_dock_window_get_docks (GIMP_DOCK_WINDOW (info->p->widget)); + for (iter = gimp_dock_container_get_docks (dock_container); iter; iter = g_list_next (iter)) {