app: get rid of including menus/ stuff from widgets/ and other places

Add GimpMenuFactory can always be found in a GimpDialogManager, use
gimp_dialog_factory_get_menu_factory() where we have a dialog factory
instead of accessing "global_menu_factory" or redundantly passing a
menu factory around where we already pass around a dialog factory.
This commit is contained in:
Michael Natterer
2016-11-23 19:16:36 +01:00
parent b795ae2296
commit a3c65e6d17
11 changed files with 60 additions and 71 deletions

View File

@ -390,7 +390,6 @@ gimp_display_new (Gimp *gimp,
GimpImage *image,
GimpUnit unit,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager,
GimpDialogFactory *dialog_factory,
GdkScreen *screen,
@ -444,7 +443,6 @@ gimp_display_new (Gimp *gimp,
{
window = gimp_image_window_new (gimp,
private->image,
menu_factory,
dialog_factory,
screen,
monitor);

View File

@ -53,7 +53,6 @@ GimpDisplay * gimp_display_new (Gimp *gimp,
GimpImage *image,
GimpUnit unit,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager,
GimpDialogFactory *dialog_factory,
GdkScreen *screen,

View File

@ -99,7 +99,6 @@ enum
{
PROP_0,
PROP_GIMP,
PROP_MENU_FACTORY,
PROP_DIALOG_FACTORY,
PROP_INITIAL_SCREEN,
PROP_INITIAL_MONITOR
@ -306,12 +305,6 @@ gimp_image_window_class_init (GimpImageWindowClass *klass)
GIMP_TYPE_GIMP,
GIMP_PARAM_WRITABLE |
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_MENU_FACTORY,
g_param_spec_object ("menu-factory",
NULL, NULL,
GIMP_TYPE_MENU_FACTORY,
GIMP_PARAM_WRITABLE |
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_DIALOG_FACTORY,
g_param_spec_object ("dialog-factory",
@ -372,12 +365,20 @@ gimp_image_window_constructed (GObject *object)
{
GimpImageWindow *window = GIMP_IMAGE_WINDOW (object);
GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
GimpMenuFactory *menu_factory;
GimpGuiConfig *config;
G_OBJECT_CLASS (parent_class)->constructed (object);
g_assert (GIMP_IS_GIMP (private->gimp));
g_assert (GIMP_IS_UI_MANAGER (private->menubar_manager));
g_assert (GIMP_IS_DIALOG_FACTORY (private->dialog_factory));
menu_factory = gimp_dialog_factory_get_menu_factory (private->dialog_factory);
private->menubar_manager = gimp_menu_factory_manager_new (menu_factory,
"<Image>",
window,
FALSE);
g_signal_connect_object (private->dialog_factory, "dock-window-added",
G_CALLBACK (gimp_image_window_update_ui_manager),
@ -556,16 +557,6 @@ gimp_image_window_set_property (GObject *object,
case PROP_GIMP:
private->gimp = g_value_get_object (value);
break;
case PROP_MENU_FACTORY:
{
GimpMenuFactory *factory = g_value_get_object (value);
private->menubar_manager = gimp_menu_factory_manager_new (factory,
"<Image>",
window,
FALSE);
}
break;
case PROP_DIALOG_FACTORY:
private->dialog_factory = g_value_get_object (value);
break;
@ -606,7 +597,6 @@ gimp_image_window_get_property (GObject *object,
g_value_set_int (value, private->initial_monitor);
break;
case PROP_MENU_FACTORY:
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@ -1121,7 +1111,6 @@ gimp_image_window_set_aux_info (GimpSessionManaged *session_managed,
GimpImageWindow *
gimp_image_window_new (Gimp *gimp,
GimpImage *image,
GimpMenuFactory *menu_factory,
GimpDialogFactory *dialog_factory,
GdkScreen *screen,
gint monitor)
@ -1131,13 +1120,11 @@ gimp_image_window_new (Gimp *gimp,
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
g_return_val_if_fail (image == NULL || GIMP_IS_IMAGE (image), NULL);
g_return_val_if_fail (GIMP_IS_MENU_FACTORY (menu_factory), NULL);
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (dialog_factory), NULL);
g_return_val_if_fail (GDK_IS_SCREEN (screen), NULL);
window = g_object_new (GIMP_TYPE_IMAGE_WINDOW,
"gimp", gimp,
"menu-factory", menu_factory,
"dialog-factory", dialog_factory,
"initial-screen", screen,
"initial-monitor", monitor,

View File

@ -47,7 +47,6 @@ GType gimp_image_window_get_type (void) G_GNUC_CONST;
GimpImageWindow * gimp_image_window_new (Gimp *gimp,
GimpImage *image,
GimpMenuFactory *menu_factory,
GimpDialogFactory *dialog_factory,
GdkScreen *screen,
gint monitor);

View File

@ -43,8 +43,6 @@
#include "display/gimpdisplayshell-appearance.h"
#include "display/gimpimagewindow.h"
#include "menus/menus.h"
#include "gimpuiconfigurer.h"
@ -450,7 +448,6 @@ gimp_ui_configurer_separate_shells (GimpUIConfigurer *ui_configurer,
/* Create a new image window */
new_image_window = gimp_image_window_new (ui_configurer->p->gimp,
NULL,
global_menu_factory,
gimp_dialog_factory_get_singleton (),
gtk_widget_get_screen (GTK_WIDGET (source_image_window)),
gimp_widget_get_monitor (GTK_WIDGET (source_image_window)));

View File

@ -398,7 +398,6 @@ gui_display_create (Gimp *gimp,
g_return_val_if_fail (image_managers != NULL, NULL);
display = gimp_display_new (gimp, image, unit, scale,
global_menu_factory,
image_managers->data,
gimp_dialog_factory_get_singleton (),
GDK_SCREEN (screen),

View File

@ -27,8 +27,6 @@
#include "widgets-types.h"
#include "menus/menus.h"
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "core/gimpmarshal.h"
@ -349,6 +347,7 @@ gimp_dock_dropped_cb (GtkWidget *source,
{
GimpDock *dock = GIMP_DOCK (data);
GimpDockable *dockable = gimp_dockbook_drag_source_to_dockable (source);
GimpDialogFactory *factory;
GtkWidget *dockbook = NULL;
if (!dockable )
@ -378,7 +377,8 @@ gimp_dock_dropped_cb (GtkWidget *source,
gimp_dockbook_remove (gimp_dockable_get_dockbook (dockable), dockable);
/* Create a new dockbook */
dockbook = gimp_dockbook_new (global_menu_factory);
factory = gimp_dock_get_dialog_factory (dock);
dockbook = gimp_dockbook_new (gimp_dialog_factory_get_menu_factory (factory));
gimp_dock_add_book (dock, GIMP_DOCKBOOK (dockbook), insert_index);
/* Add the dockable to new new dockbook */

View File

@ -29,8 +29,6 @@
#include "widgets-types.h"
#include "menus/menus.h"
#include "core/gimpcontext.h"
#include "gimpdialogfactory.h"
@ -845,11 +843,13 @@ gimp_dockable_set_drag_handler (GimpDockable *dockable,
void
gimp_dockable_detach (GimpDockable *dockable)
{
GimpDockWindow *src_dock_window = NULL;
GimpDock *src_dock = NULL;
GtkWidget *dock = NULL;
GimpDockWindow *dock_window = NULL;
GtkWidget *dockbook = NULL;
GimpDialogFactory *dialog_factory;
GimpMenuFactory *menu_factory;
GimpDockWindow *src_dock_window;
GimpDock *src_dock;
GtkWidget *dock;
GimpDockWindow *dock_window;
GtkWidget *dockbook;
g_return_if_fail (GIMP_IS_DOCKABLE (dockable));
g_return_if_fail (GIMP_IS_DOCKBOOK (dockable->p->dockbook));
@ -857,7 +857,10 @@ 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_dock_with_window_new (gimp_dialog_factory_get_singleton (),
dialog_factory = gimp_dock_get_dialog_factory (src_dock);
menu_factory = gimp_dialog_factory_get_menu_factory (dialog_factory);
dock = gimp_dock_with_window_new (dialog_factory,
gtk_widget_get_screen (GTK_WIDGET (dockable)),
gimp_widget_get_monitor (GTK_WIDGET (dockable)),
FALSE /*toolbox*/);
@ -866,7 +869,7 @@ gimp_dockable_detach (GimpDockable *dockable)
if (src_dock_window)
gimp_dock_window_setup (dock_window, src_dock_window);
dockbook = gimp_dockbook_new (global_menu_factory);
dockbook = gimp_dockbook_new (menu_factory);
gimp_dock_add_book (GIMP_DOCK (dock), GIMP_DOCKBOOK (dockbook), 0);

View File

@ -25,8 +25,6 @@
#include "widgets-types.h"
#include "menus/menus.h"
#include "core/gimp.h"
#include "core/gimpcontext.h"
#include "core/gimpmarshal.h"
@ -118,12 +116,14 @@ 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,
@ -409,13 +409,15 @@ gimp_dock_columns_prepare_dockbook (GimpDockColumns *dock_columns,
gint dock_index,
GtkWidget **dockbook_p)
{
GimpMenuFactory *menu_factory;
GtkWidget *dock;
GtkWidget *dockbook;
dock = gimp_menu_dock_new ();
gimp_dock_columns_add_dock (dock_columns, GIMP_DOCK (dock), dock_index);
dockbook = gimp_dockbook_new (global_menu_factory);
menu_factory = gimp_dialog_factory_get_menu_factory (dock_columns->p->dialog_factory);
dockbook = gimp_dockbook_new (menu_factory);
gimp_dock_add_book (GIMP_DOCK (dock), GIMP_DOCKBOOK (dockbook), -1);
gtk_widget_show (GTK_WIDGET (dock));

View File

@ -31,8 +31,6 @@
#include "dialogs/dialogs.h" /* FIXME, we are in the widget layer */
#include "menus/menus.h"
#include "config/gimpguiconfig.h"
#include "core/gimp.h"
@ -290,6 +288,7 @@ gimp_dock_window_constructed (GObject *object)
GimpDockWindow *dock_window = GIMP_DOCK_WINDOW (object);
GimpGuiConfig *config;
GimpContext *factory_context;
GimpMenuFactory *menu_factory;
GtkAccelGroup *accel_group;
Gimp *gimp;
GtkSettings *settings;
@ -316,11 +315,14 @@ gimp_dock_window_constructed (GObject *object)
/* Setup hints */
gimp_window_set_hint (GTK_WINDOW (dock_window), config->dock_window_hint);
menu_factory =
gimp_dialog_factory_get_menu_factory (dock_window->p->dialog_factory);
/* Make image window related keyboard shortcuts work also when a
* dock window is the focused window
*/
dock_window->p->ui_manager =
gimp_menu_factory_manager_new (global_menu_factory,
gimp_menu_factory_manager_new (menu_factory,
dock_window->p->ui_manager_name,
dock_window,
config->tearoff_menus);
@ -1138,17 +1140,17 @@ GtkWidget *
gimp_dock_window_new (const gchar *role,
const gchar *ui_manager_name,
gboolean allow_dockbook_absence,
GimpDialogFactory *factory,
GimpDialogFactory *dialog_factory,
GimpContext *context)
{
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (factory), NULL);
g_return_val_if_fail (GIMP_IS_DIALOG_FACTORY (dialog_factory), NULL);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
return g_object_new (GIMP_TYPE_DOCK_WINDOW,
"role", role,
"ui-manager-name", ui_manager_name,
"allow-dockbook-absence", allow_dockbook_absence,
"dialog-factory", factory,
"dialog-factory", dialog_factory,
"context", context,
NULL);
}

View File

@ -26,8 +26,6 @@
#include "widgets-types.h"
#include "menus/menus.h"
#include "gimpdialogfactory.h"
#include "gimpdock.h"
#include "gimpdockbook.h"
@ -242,6 +240,8 @@ GimpDockbook *
gimp_session_info_book_restore (GimpSessionInfoBook *info,
GimpDock *dock)
{
GimpDialogFactory *dialog_factory;
GimpMenuFactory *menu_factory;
GtkWidget *dockbook;
GList *pages;
gint n_dockables = 0;
@ -249,7 +249,10 @@ gimp_session_info_book_restore (GimpSessionInfoBook *info,
g_return_val_if_fail (info != NULL, NULL);
g_return_val_if_fail (GIMP_IS_DOCK (dock), NULL);
dockbook = gimp_dockbook_new (global_menu_factory);
dialog_factory = gimp_dock_get_dialog_factory (dock);
menu_factory = gimp_dialog_factory_get_menu_factory (dialog_factory);
dockbook = gimp_dockbook_new (menu_factory);
gimp_dock_add_book (dock, GIMP_DOCKBOOK (dockbook), -1);