mirror of https://github.com/GNOME/gimp.git
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:
parent
0fc1a32ad0
commit
88e6fe1e62
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue