app: Add GimpDialogFactory property to GimpDockWindow

Add a GimpDialogFactory property to GimpDockWindow so that it can get
rid of its GimpDock dependency. We need to call the property
"gimp-dialog-factory" instead of "dialog-factory" though as long as
GimpDock subclasses GimpDockWindow.
This commit is contained in:
Martin Nordholts 2009-09-13 09:49:56 +02:00
parent 0fc1a32ad0
commit 88e6fe1e62
3 changed files with 42 additions and 17 deletions

View File

@ -34,7 +34,6 @@
#include "core/gimpcontainer.h"
#include "gimpdialogfactory.h"
#include "gimpdock.h"
#include "gimpdockwindow.h"
#include "gimpmenufactory.h"
#include "gimpuimanager.h"
@ -48,17 +47,20 @@ enum
{
PROP_0,
PROP_CONTEXT,
PROP_DIALOG_FACTORY,
PROP_UI_MANAGER_NAME,
};
struct _GimpDockWindowPrivate
{
GimpContext *context;
GimpContext *context;
gchar *ui_manager_name;
GimpUIManager *ui_manager;
GQuark image_flush_handler_id;
GimpDialogFactory *dialog_factory;
gchar *ui_manager_name;
GimpUIManager *ui_manager;
GQuark image_flush_handler_id;
};
static GObject * gimp_dock_window_constructor (GType type,
@ -104,6 +106,13 @@ gimp_dock_window_class_init (GimpDockWindowClass *klass)
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_DIALOG_FACTORY,
g_param_spec_object ("gimp-dialog-factory",
NULL, NULL,
GIMP_TYPE_DIALOG_FACTORY,
GIMP_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_UI_MANAGER_NAME,
g_param_spec_string ("ui-manager-name",
NULL, NULL,
@ -151,7 +160,7 @@ gimp_dock_window_constructor (GType type,
* dock window is the focused window
*/
dock_window->p->ui_manager =
gimp_menu_factory_manager_new (gimp_dock_get_dialog_factory (GIMP_DOCK (dock_window))->menu_factory,
gimp_menu_factory_manager_new (dock_window->p->dialog_factory->menu_factory,
dock_window->p->ui_manager_name,
dock_window,
config->tearoff_menus);
@ -196,6 +205,12 @@ gimp_dock_window_dispose (GObject *object)
dock_window->p->ui_manager = NULL;
}
if (dock_window->p->dialog_factory)
{
g_object_unref (dock_window->p->dialog_factory);
dock_window->p->dialog_factory = NULL;
}
if (dock_window->p->context)
{
g_object_unref (dock_window->p->context);
@ -219,6 +234,10 @@ gimp_dock_window_set_property (GObject *object,
dock_window->p->context = g_value_dup_object (value);
break;
case PROP_DIALOG_FACTORY:
dock_window->p->dialog_factory = g_value_dup_object (value);
break;
case PROP_UI_MANAGER_NAME:
g_free (dock_window->p->ui_manager_name);
dock_window->p->ui_manager_name = g_value_dup_string (value);
@ -244,6 +263,10 @@ gimp_dock_window_get_property (GObject *object,
g_value_set_object (value, dock_window->p->context);
break;
case PROP_DIALOG_FACTORY:
g_value_set_object (value, dock_window->p->dialog_factory);
break;
case PROP_UI_MANAGER_NAME:
g_value_set_string (value, dock_window->p->ui_manager_name);
break;

View File

@ -389,11 +389,12 @@ gimp_menu_dock_new (GimpDialogFactory *dialog_factory,
"Dock Context", NULL);
menu_dock = g_object_new (GIMP_TYPE_MENU_DOCK,
"role", "gimp-dock",
"gimp-context", context,
"context", context,
"dialog-factory", dialog_factory,
"ui-manager-name", "<Dock>",
"role", "gimp-dock",
"context", context,
"dialog-factory", dialog_factory,
"ui-manager-name", "<Dock>",
"gimp-context", context,
"gimp-dialog-factory", dialog_factory,
NULL);
g_object_unref (context);

View File

@ -617,12 +617,13 @@ gimp_toolbox_new (GimpDialogFactory *dialog_factory,
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
toolbox = g_object_new (GIMP_TYPE_TOOLBOX,
"title", _("Toolbox"),
"role", "gimp-toolbox",
"gimp-context", context,
"context", context,
"dialog-factory", dialog_factory,
"ui-manager-name", "<Toolbox>",
"title", _("Toolbox"),
"role", "gimp-toolbox",
"context", context,
"dialog-factory", dialog_factory,
"ui-manager-name", "<Toolbox>",
"gimp-context", context,
"gimp-dialog-factory", dialog_factory,
NULL);
return GTK_WIDGET (toolbox);