From 1e9048ded9ee9434fcbc8cee987e1ca6c8331eb5 Mon Sep 17 00:00:00 2001 From: Martin Nordholts Date: Sat, 20 Feb 2010 16:55:35 +0100 Subject: [PATCH] app: Turn gimp_dialog_factory_dock_with_window_new() into util func Turn gimp_dialog_factory_dock_with_window_new() into a utility function, it doesn't make sense to let it be part of the generic GimpDialogFactory. --- app/actions/windows-commands.c | 7 ++-- app/tests/test-window-management.c | 13 +++--- app/widgets/gimpdialogfactory.c | 65 ++---------------------------- app/widgets/gimpdialogfactory.h | 3 -- app/widgets/gimpdockable.c | 6 +-- app/widgets/gimpwidgets-utils.c | 58 ++++++++++++++++++++++++++ app/widgets/gimpwidgets-utils.h | 4 +- 7 files changed, 79 insertions(+), 77 deletions(-) diff --git a/app/actions/windows-commands.c b/app/actions/windows-commands.c index b8c99798d7..b06fd5c461 100644 --- a/app/actions/windows-commands.c +++ b/app/actions/windows-commands.c @@ -31,6 +31,7 @@ #include "widgets/gimpdialogfactory.h" #include "widgets/gimpsessioninfo.h" +#include "widgets/gimpwidgets-utils.h" #include "display/gimpdisplay.h" #include "display/gimpdisplayshell.h" @@ -104,9 +105,9 @@ windows_show_toolbox (void) if (! dialogs_get_toolbox ()) { - toolbox = gimp_dialog_factory_dock_with_window_new (global_dialog_factory, - gdk_screen_get_default (), - TRUE /*toolbox*/); + toolbox = gimp_dock_with_window_new (global_dialog_factory, + gdk_screen_get_default (), + TRUE /*toolbox*/); gtk_widget_show (toolbox); } diff --git a/app/tests/test-window-management.c b/app/tests/test-window-management.c index 34eb281628..95a4ea6582 100644 --- a/app/tests/test-window-management.c +++ b/app/tests/test-window-management.c @@ -25,6 +25,7 @@ #include "widgets/gimpdialogfactory.h" #include "widgets/gimpdock.h" #include "widgets/gimpdockwindow.h" +#include "widgets/gimpwidgets-utils.h" #include "core/gimp.h" #include "core/gimpcontext.h" @@ -98,12 +99,12 @@ gimp_test_window_roles (GimpTestFixture *fixture, GimpDockWindow *dock_window = NULL; GimpDockWindow *toolbox_window = NULL; - dock = gimp_dialog_factory_dock_with_window_new (global_dialog_factory, - gdk_screen_get_default (), - FALSE /*toolbox*/); - toolbox = gimp_dialog_factory_dock_with_window_new (global_dialog_factory, - gdk_screen_get_default (), - TRUE /*toolbox*/); + dock = gimp_dock_with_window_new (global_dialog_factory, + gdk_screen_get_default (), + FALSE /*toolbox*/); + toolbox = gimp_dock_with_window_new (global_dialog_factory, + gdk_screen_get_default (), + TRUE /*toolbox*/); dock_window = gimp_dock_window_from_dock (GIMP_DOCK (dock)); toolbox_window = gimp_dock_window_from_dock (GIMP_DOCK (toolbox)); diff --git a/app/widgets/gimpdialogfactory.c b/app/widgets/gimpdialogfactory.c index a5cb14461b..bd4e95cc8b 100644 --- a/app/widgets/gimpdialogfactory.c +++ b/app/widgets/gimpdialogfactory.c @@ -41,6 +41,7 @@ #include "gimpdockwindow.h" #include "gimpmenufactory.h" #include "gimpsessioninfo.h" +#include "gimpwidgets-utils.h" #include "gimp-log.h" @@ -477,9 +478,9 @@ gimp_dialog_factory_dialog_new_internal (GimpDialogFactory *factory, * dialog. We do this because the new dockable needs to be * created in its dock's context. */ - dock = gimp_dialog_factory_dock_with_window_new (factory, - screen, - FALSE /*toolbox*/); + dock = gimp_dock_with_window_new (factory, + screen, + FALSE /*toolbox*/); dockbook = gimp_dockbook_new (factory->p->menu_factory); gimp_dock_add_book (GIMP_DOCK (dock), @@ -787,64 +788,6 @@ gimp_dialog_factory_dockable_new (GimpDialogFactory *factory, FALSE); } -/** - * gimp_dialog_factory_dock_with_window_new: - * @factory: a #GimpDialogFacotry - * @screen: the #GdkScreen the dock window should appear on - * - * Returns a new #GimpDock in this %factory's context, put inside a - * #GimpDockWindow. We use a function pointer passed to this - * %factory's constructor instead of simply gimp_dock_new() because we - * may want different instances of #GimpDialogFactory create different - * subclasses of #GimpDock. - * - * Return value: the newly created #GimpDock. - **/ -GtkWidget * -gimp_dialog_factory_dock_with_window_new (GimpDialogFactory *factory, - GdkScreen *screen, - gboolean toolbox) -{ - GtkWidget *dock_window = NULL; - GtkWidget *dock = NULL; - GimpUIManager *ui_manager = NULL; - - g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL); - g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); - - /* Create a dock window to put the dock in. We need to create the - * dock window before the dock because the dock has a dependency to - * the ui manager in the dock window - */ - dock_window = - gimp_dialog_factory_dialog_new (factory, - screen, - (toolbox ? - "gimp-toolbox-window" : - "gimp-dock-window"), - -1 /*view_size*/, - FALSE /*present*/); - - /* Create the dock */ - ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dock_window)); - dock = gimp_dialog_factory_dialog_new (factory, - screen, - (toolbox ? - "gimp-toolbox" : - "gimp-dock"), - -1 /*view_size*/, - FALSE /*present*/); - if (dock) - { - /* Put the dock in the dock window */ - gimp_dock_window_add_dock (GIMP_DOCK_WINDOW (dock_window), - GIMP_DOCK (dock), - -1); - } - - return dock; -} - void gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, GtkWidget *dialog) diff --git a/app/widgets/gimpdialogfactory.h b/app/widgets/gimpdialogfactory.h index 634c859662..9b4681b17b 100644 --- a/app/widgets/gimpdialogfactory.h +++ b/app/widgets/gimpdialogfactory.h @@ -150,9 +150,6 @@ GtkWidget * gimp_dialog_factory_dockable_new (GimpDialogFactory GimpDock *dock, const gchar *identifier, gint view_size); -GtkWidget * gimp_dialog_factory_dock_with_window_new (GimpDialogFactory *factory, - GdkScreen *screen, - gboolean toolbox); void gimp_dialog_factory_add_dialog (GimpDialogFactory *factory, GtkWidget *dialog); void gimp_dialog_factory_add_foreign (GimpDialogFactory *factory, diff --git a/app/widgets/gimpdockable.c b/app/widgets/gimpdockable.c index a7771cf065..362ba6677b 100644 --- a/app/widgets/gimpdockable.c +++ b/app/widgets/gimpdockable.c @@ -1205,9 +1205,9 @@ gimp_dockable_detach (GimpDockable *dockable) src_dock = gimp_dockbook_get_dock (dockable->p->dockbook); src_dock_window = gimp_dock_window_from_dock (src_dock); - dock = gimp_dialog_factory_dock_with_window_new (global_dialog_factory, - gtk_widget_get_screen (GTK_WIDGET (dockable)), - FALSE /*toolbox*/); + dock = gimp_dock_with_window_new (global_dialog_factory, + gtk_widget_get_screen (GTK_WIDGET (dockable)), + FALSE /*toolbox*/); dock_window = gimp_dock_window_from_dock (GIMP_DOCK (dock)); gtk_window_set_position (GTK_WINDOW (dock_window), GTK_WIN_POS_MOUSE); if (src_dock_window) diff --git a/app/widgets/gimpwidgets-utils.c b/app/widgets/gimpwidgets-utils.c index b1fb850d1b..762a069ce8 100644 --- a/app/widgets/gimpwidgets-utils.c +++ b/app/widgets/gimpwidgets-utils.c @@ -56,6 +56,9 @@ #include "widgets-types.h" +#include "gimpdialogfactory.h" +#include "gimpdock.h" +#include "gimpdockwindow.h" #include "gimperrordialog.h" #include "gimpwidgets-utils.h" @@ -1186,3 +1189,58 @@ gimp_highlight_widget (GtkWidget *widget, else gtk_drag_unhighlight (widget); } + +/** + * gimp_dock_with_window_new: + * @factory: a #GimpDialogFacotry + * @screen: the #GdkScreen the dock window should appear on + * @toolbox: if %TRUE; gives a "gimp-toolbox-window" with a + * "gimp-toolbox", "gimp-dock-window"+"gimp-dock" + * otherwise + * + * Returns: the newly created #GimpDock with the #GimpDockWindow + **/ +GtkWidget * +gimp_dock_with_window_new (GimpDialogFactory *factory, + GdkScreen *screen, + gboolean toolbox) +{ + GtkWidget *dock_window = NULL; + GtkWidget *dock = NULL; + GimpUIManager *ui_manager = NULL; + + g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL); + g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL); + + /* Create a dock window to put the dock in. We need to create the + * dock window before the dock because the dock has a dependency to + * the ui manager in the dock window + */ + dock_window = + gimp_dialog_factory_dialog_new (factory, + screen, + (toolbox ? + "gimp-toolbox-window" : + "gimp-dock-window"), + -1 /*view_size*/, + FALSE /*present*/); + + /* Create the dock */ + ui_manager = gimp_dock_window_get_ui_manager (GIMP_DOCK_WINDOW (dock_window)); + dock = gimp_dialog_factory_dialog_new (factory, + screen, + (toolbox ? + "gimp-toolbox" : + "gimp-dock"), + -1 /*view_size*/, + FALSE /*present*/); + if (dock) + { + /* Put the dock in the dock window */ + gimp_dock_window_add_dock (GIMP_DOCK_WINDOW (dock_window), + GIMP_DOCK (dock), + -1); + } + + return dock; +} diff --git a/app/widgets/gimpwidgets-utils.h b/app/widgets/gimpwidgets-utils.h index b24ba44585..94a026223f 100644 --- a/app/widgets/gimpwidgets-utils.h +++ b/app/widgets/gimpwidgets-utils.h @@ -89,7 +89,9 @@ void gimp_pango_layout_set_weight (PangoLayout *layout PangoWeight weight); void gimp_highlight_widget (GtkWidget *widget, gboolean highlight); - +GtkWidget * gimp_dock_with_window_new (GimpDialogFactory *factory, + GdkScreen *screen, + gboolean toolbox); #endif /* __GIMP_WIDGETS_UTILS_H__ */