mirror of https://github.com/GNOME/gimp.git
app: Add "dialog-factory", "ui-manager" properties to GimpDockColumns
Add "dialog-factory", "ui-manager" properties to GimpDockColumns and let GimpDock look for these before trying to look for a dock window which does not exist in single-window mode.
This commit is contained in:
parent
bc5da21ba2
commit
5d79f664d3
|
@ -311,9 +311,9 @@ gimp_image_window_constructor (GType type,
|
|||
|
||||
/* Create the left dock columns widget */
|
||||
private->left_docks =
|
||||
gimp_dock_columns_new (gimp_get_user_context (private->gimp));
|
||||
gimp_dock_columns_set_context (GIMP_DOCK_COLUMNS (private->left_docks),
|
||||
gimp_get_user_context (private->gimp));
|
||||
gimp_dock_columns_new (gimp_get_user_context (private->gimp),
|
||||
private->dock_factory,
|
||||
private->menubar_manager);
|
||||
gtk_paned_pack1 (GTK_PANED (private->left_hpane), private->left_docks,
|
||||
FALSE, FALSE);
|
||||
if (config->single_window_mode)
|
||||
|
@ -341,7 +341,9 @@ gimp_image_window_constructor (GType type,
|
|||
|
||||
/* Create the right dock columns widget */
|
||||
private->right_docks =
|
||||
gimp_dock_columns_new (gimp_get_user_context (private->gimp));
|
||||
gimp_dock_columns_new (gimp_get_user_context (private->gimp),
|
||||
private->dock_factory,
|
||||
private->menubar_manager);
|
||||
gtk_paned_pack2 (GTK_PANED (private->right_hpane), private->right_docks,
|
||||
FALSE, FALSE);
|
||||
if (config->single_window_mode)
|
||||
|
|
|
@ -405,7 +405,7 @@ gimp_dock_update_with_context (GimpDock *dock,
|
|||
GimpContext *
|
||||
gimp_dock_get_context (GimpDock *dock)
|
||||
{
|
||||
GimpContext *context = NULL;
|
||||
GimpContext *context = NULL;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DOCK (dock), NULL);
|
||||
|
||||
|
@ -427,7 +427,7 @@ gimp_dock_get_context (GimpDock *dock)
|
|||
context = gimp_dock_window_get_context (dock_window);
|
||||
}
|
||||
|
||||
return context;
|
||||
return context;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -440,13 +440,29 @@ gimp_dock_get_context (GimpDock *dock)
|
|||
GimpDialogFactory *
|
||||
gimp_dock_get_dialog_factory (GimpDock *dock)
|
||||
{
|
||||
GimpDockWindow *dock_window = NULL;
|
||||
GimpDialogFactory *dialog_factory = NULL;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DOCK (dock), NULL);
|
||||
|
||||
dock_window = gimp_dock_window_from_dock (dock);
|
||||
/* First try GimpDockColumns */
|
||||
if (! dialog_factory)
|
||||
{
|
||||
GimpDockColumns *dock_columns = gimp_dock_get_dock_columns (dock);
|
||||
|
||||
return gimp_dock_window_get_dialog_factory (dock_window);
|
||||
if (dock_columns)
|
||||
dialog_factory = gimp_dock_columns_get_dialog_factory (dock_columns);
|
||||
}
|
||||
|
||||
/* Then GimpDockWindow */
|
||||
if (! dialog_factory)
|
||||
{
|
||||
GimpDockWindow *dock_window = gimp_dock_window_from_dock (dock);
|
||||
|
||||
if (dock_window)
|
||||
dialog_factory = gimp_dock_window_get_dialog_factory (dock_window);
|
||||
}
|
||||
|
||||
return dialog_factory;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -459,13 +475,29 @@ gimp_dock_get_dialog_factory (GimpDock *dock)
|
|||
GimpUIManager *
|
||||
gimp_dock_get_ui_manager (GimpDock *dock)
|
||||
{
|
||||
GimpDockWindow *dock_window = NULL;
|
||||
GimpUIManager *ui_manager = NULL;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DOCK (dock), NULL);
|
||||
|
||||
dock_window = gimp_dock_window_from_dock (dock);
|
||||
/* First try GimpDockColumns */
|
||||
if (! ui_manager)
|
||||
{
|
||||
GimpDockColumns *dock_columns = gimp_dock_get_dock_columns (dock);
|
||||
|
||||
return gimp_dock_window_get_ui_manager (dock_window);
|
||||
if (dock_columns)
|
||||
ui_manager = gimp_dock_columns_get_ui_manager (dock_columns);
|
||||
}
|
||||
|
||||
/* Then GimpDockWindow */
|
||||
if (! ui_manager)
|
||||
{
|
||||
GimpDockWindow *dock_window = gimp_dock_window_from_dock (dock);
|
||||
|
||||
if (dock_window)
|
||||
ui_manager = gimp_dock_window_get_ui_manager (dock_window);
|
||||
}
|
||||
|
||||
return ui_manager;
|
||||
}
|
||||
|
||||
GList *
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "gimpmenudock.h"
|
||||
#include "gimppanedbox.h"
|
||||
#include "gimptoolbox.h"
|
||||
#include "gimpuimanager.h"
|
||||
|
||||
#include "gimp-log.h"
|
||||
|
||||
|
@ -47,7 +48,9 @@
|
|||
enum
|
||||
{
|
||||
PROP_0,
|
||||
PROP_CONTEXT
|
||||
PROP_CONTEXT,
|
||||
PROP_DIALOG_FACTORY,
|
||||
PROP_UI_MANAGER
|
||||
};
|
||||
|
||||
enum
|
||||
|
@ -60,11 +63,13 @@ enum
|
|||
|
||||
struct _GimpDockColumnsPrivate
|
||||
{
|
||||
GimpContext *context;
|
||||
GimpContext *context;
|
||||
GimpDialogFactory *dialog_factory;
|
||||
GimpUIManager *ui_manager;
|
||||
|
||||
GList *docks;
|
||||
GList *docks;
|
||||
|
||||
GtkWidget *paned_hbox;
|
||||
GtkWidget *paned_hbox;
|
||||
};
|
||||
|
||||
|
||||
|
@ -112,6 +117,18 @@ gimp_dock_columns_class_init (GimpDockColumnsClass *klass)
|
|||
GIMP_TYPE_CONTEXT,
|
||||
GIMP_PARAM_WRITABLE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
g_object_class_install_property (object_class, PROP_DIALOG_FACTORY,
|
||||
g_param_spec_object ("dialog-factory",
|
||||
NULL, NULL,
|
||||
GIMP_TYPE_DIALOG_FACTORY,
|
||||
GIMP_PARAM_WRITABLE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
g_object_class_install_property (object_class, PROP_UI_MANAGER,
|
||||
g_param_spec_object ("ui-manager",
|
||||
NULL, NULL,
|
||||
GIMP_TYPE_UI_MANAGER,
|
||||
GIMP_PARAM_WRITABLE |
|
||||
G_PARAM_CONSTRUCT_ONLY));
|
||||
|
||||
dock_columns_signals[DOCK_ADDED] =
|
||||
g_signal_new ("dock-added",
|
||||
|
@ -165,6 +182,12 @@ gimp_dock_columns_set_property (GObject *object,
|
|||
case PROP_CONTEXT:
|
||||
dock_columns->p->context = g_value_get_object (value);
|
||||
break;
|
||||
case PROP_DIALOG_FACTORY:
|
||||
dock_columns->p->dialog_factory = g_value_get_object (value);
|
||||
break;
|
||||
case PROP_UI_MANAGER:
|
||||
dock_columns->p->ui_manager = g_value_get_object (value);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
|
@ -185,6 +208,12 @@ gimp_dock_columns_get_property (GObject *object,
|
|||
case PROP_CONTEXT:
|
||||
g_value_set_object (value, dock_columns->p->context);
|
||||
break;
|
||||
case PROP_DIALOG_FACTORY:
|
||||
g_value_set_object (value, dock_columns->p->dialog_factory);
|
||||
break;
|
||||
case PROP_UI_MANAGER:
|
||||
g_value_set_object (value, dock_columns->p->ui_manager);
|
||||
break;
|
||||
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||
|
@ -259,12 +288,18 @@ gimp_dock_columns_dock_book_removed (GimpDockColumns *dock_columns,
|
|||
* Returns: A new #GimpDockColumns.
|
||||
**/
|
||||
GtkWidget *
|
||||
gimp_dock_columns_new (GimpContext *context)
|
||||
gimp_dock_columns_new (GimpContext *context,
|
||||
GimpDialogFactory *dialog_factory,
|
||||
GimpUIManager *ui_manager)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
|
||||
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (dialog_factory), NULL);
|
||||
g_return_val_if_fail (GIMP_IS_UI_MANAGER (ui_manager), NULL);
|
||||
|
||||
return g_object_new (GIMP_TYPE_DOCK_COLUMNS,
|
||||
"context", context,
|
||||
"context", context,
|
||||
"dialog-factory", dialog_factory,
|
||||
"ui-manager", ui_manager,
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
@ -351,3 +386,19 @@ gimp_dock_columns_set_context (GimpDockColumns *dock_columns,
|
|||
|
||||
dock_columns->p->context = context;
|
||||
}
|
||||
|
||||
GimpDialogFactory *
|
||||
gimp_dock_columns_get_dialog_factory (GimpDockColumns *dock_columns)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_DOCK_COLUMNS (dock_columns), NULL);
|
||||
|
||||
return dock_columns->p->dialog_factory;
|
||||
}
|
||||
|
||||
GimpUIManager *
|
||||
gimp_dock_columns_get_ui_manager (GimpDockColumns *dock_columns)
|
||||
{
|
||||
g_return_val_if_fail (GIMP_IS_DOCK_COLUMNS (dock_columns), NULL);
|
||||
|
||||
return dock_columns->p->ui_manager;
|
||||
}
|
||||
|
|
|
@ -57,17 +57,21 @@ struct _GimpDockColumnsClass
|
|||
};
|
||||
|
||||
|
||||
GType gimp_dock_columns_get_type (void) G_GNUC_CONST;
|
||||
GtkWidget * gimp_dock_columns_new (GimpContext *context);
|
||||
void gimp_dock_columns_add_dock (GimpDockColumns *dock_columns,
|
||||
GimpDock *dock,
|
||||
gint index);
|
||||
void gimp_dock_columns_remove_dock (GimpDockColumns *dock_columns,
|
||||
GimpDock *dock);
|
||||
GList * gimp_dock_columns_get_docks (GimpDockColumns *dock_columns);
|
||||
GimpContext * gimp_dock_columns_get_context (GimpDockColumns *dock_columns);
|
||||
void gimp_dock_columns_set_context (GimpDockColumns *dock_columns,
|
||||
GimpContext *context);
|
||||
GType gimp_dock_columns_get_type (void) G_GNUC_CONST;
|
||||
GtkWidget * gimp_dock_columns_new (GimpContext *context,
|
||||
GimpDialogFactory *dialog_factory,
|
||||
GimpUIManager *ui_manager);
|
||||
void gimp_dock_columns_add_dock (GimpDockColumns *dock_columns,
|
||||
GimpDock *dock,
|
||||
gint index);
|
||||
void gimp_dock_columns_remove_dock (GimpDockColumns *dock_columns,
|
||||
GimpDock *dock);
|
||||
GList * gimp_dock_columns_get_docks (GimpDockColumns *dock_columns);
|
||||
GimpContext * gimp_dock_columns_get_context (GimpDockColumns *dock_columns);
|
||||
void gimp_dock_columns_set_context (GimpDockColumns *dock_columns,
|
||||
GimpContext *context);
|
||||
GimpDialogFactory * gimp_dock_columns_get_dialog_factory (GimpDockColumns *dock_columns);
|
||||
GimpUIManager * gimp_dock_columns_get_ui_manager (GimpDockColumns *dock_columns);
|
||||
|
||||
|
||||
#endif /* __GIMP_DOCK_COLUMNS_H__ */
|
||||
|
|
|
@ -366,7 +366,9 @@ gimp_dock_window_constructor (GType type,
|
|||
* GimpImageWindow so docks can get the GimpContext there as well
|
||||
*/
|
||||
dock_window->p->dock_columns =
|
||||
GIMP_DOCK_COLUMNS (gimp_dock_columns_new (dock_window->p->context));
|
||||
GIMP_DOCK_COLUMNS (gimp_dock_columns_new (dock_window->p->context,
|
||||
dock_window->p->dialog_factory,
|
||||
dock_window->p->ui_manager));
|
||||
gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (dock_window->p->dock_columns),
|
||||
TRUE, TRUE, 0);
|
||||
gtk_widget_show (GTK_WIDGET (dock_window->p->dock_columns));
|
||||
|
@ -376,6 +378,18 @@ gimp_dock_window_constructor (GType type,
|
|||
G_CONNECT_SWAPPED);
|
||||
}
|
||||
|
||||
if (dock_window->p->auto_follow_active)
|
||||
{
|
||||
if (gimp_context_get_display (gimp_dialog_factory_get_context (dock_window->p->dialog_factory)))
|
||||
gimp_context_copy_property (gimp_dialog_factory_get_context (dock_window->p->dialog_factory),
|
||||
dock_window->p->context,
|
||||
GIMP_CONTEXT_PROP_DISPLAY);
|
||||
else
|
||||
gimp_context_copy_property (gimp_dialog_factory_get_context (dock_window->p->dialog_factory),
|
||||
dock_window->p->context,
|
||||
GIMP_CONTEXT_PROP_IMAGE);
|
||||
}
|
||||
|
||||
g_signal_connect_object (gimp_dialog_factory_get_context (dock_window->p->dialog_factory), "display-changed",
|
||||
G_CALLBACK (gimp_dock_window_factory_display_changed),
|
||||
dock_window,
|
||||
|
|
Loading…
Reference in New Issue