mirror of https://github.com/GNOME/gimp.git
Some cleanup to make plug-in menu creation less hackish and finally enable
2005-01-31 Michael Natterer <mitch@gimp.org> Some cleanup to make plug-in menu creation less hackish and finally enable registering plug-in menu entries in much more UI managers (not only in the image and toolbox menus): * app/menus/menus.c: added a <Toolbox> UI manager instead of creating the toolbox menu from the <Image> UI manager. * app/widgets/gimpimagedock.[ch]: removed the ui_manager and the signal connections to update it... * app/widgets/gimpdock.[ch]: ...and added them here so all docks have their own UI manager. Determine which manager to create from looking at GimpDockClass::ui_manager_name (defaults to <Dock>). * app/widgets/gimptoolbox.c: set ui_manager_name to <Toolbox> and use the UI manager created by our parent class instead of using the <Image> one. (toolbox_create_tools): use gimp_action_get_accel_closure() instead of doing evil hacks. * app/gui/gui-vtable.c * app/menus/plug-in-menus.c: removed lots of special casing of the <Image> UI manager. The code is almost ready for allowing plug-in menus under <Layers>, <Channels>, <Brushes> etc.
This commit is contained in:
parent
843490a152
commit
f3e0792dcf
28
ChangeLog
28
ChangeLog
|
@ -1,3 +1,31 @@
|
|||
2005-01-31 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
Some cleanup to make plug-in menu creation less hackish and
|
||||
finally enable registering plug-in menu entries in much more UI
|
||||
managers (not only in the image and toolbox menus):
|
||||
|
||||
* app/menus/menus.c: added a <Toolbox> UI manager instead of
|
||||
creating the toolbox menu from the <Image> UI manager.
|
||||
|
||||
* app/widgets/gimpimagedock.[ch]: removed the ui_manager and the
|
||||
signal connections to update it...
|
||||
|
||||
* app/widgets/gimpdock.[ch]: ...and added them here so all docks
|
||||
have their own UI manager. Determine which manager to create from
|
||||
looking at GimpDockClass::ui_manager_name (defaults to <Dock>).
|
||||
|
||||
* app/widgets/gimptoolbox.c: set ui_manager_name to <Toolbox> and
|
||||
use the UI manager created by our parent class instead of using
|
||||
the <Image> one.
|
||||
|
||||
(toolbox_create_tools): use gimp_action_get_accel_closure()
|
||||
instead of doing evil hacks.
|
||||
|
||||
* app/gui/gui-vtable.c
|
||||
* app/menus/plug-in-menus.c: removed lots of special casing of the
|
||||
<Image> UI manager. The code is almost ready for allowing plug-in
|
||||
menus under <Layers>, <Channels>, <Brushes> etc.
|
||||
|
||||
2005-01-30 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* app/core/gimpimagemap.c: formatting.
|
||||
|
|
|
@ -335,7 +335,6 @@ gui_display_create (GimpImage *gimage,
|
|||
|
||||
gdisp = gimp_display_new (gimage, unit, scale,
|
||||
global_menu_factory,
|
||||
|
||||
image_managers->data);
|
||||
|
||||
gimp_context_set_display (gimp_get_user_context (gimage->gimp), gdisp);
|
||||
|
@ -368,6 +367,73 @@ gui_menus_init (Gimp *gimp,
|
|||
plug_in_menus_init (gimp, plug_in_defs, std_plugins_domain);
|
||||
}
|
||||
|
||||
static void
|
||||
gui_menus_add_proc (Gimp *gimp,
|
||||
PlugInProcDef *proc_def,
|
||||
const gchar *menu_path)
|
||||
{
|
||||
gchar *name;
|
||||
gchar *p;
|
||||
GList *list;
|
||||
|
||||
name = g_strdup (menu_path);
|
||||
|
||||
p = strchr (name, '>');
|
||||
|
||||
if (p)
|
||||
{
|
||||
p[1] = '\0';
|
||||
|
||||
for (list = gimp_ui_managers_from_name (name);
|
||||
list;
|
||||
list = g_list_next (list))
|
||||
{
|
||||
if (! strncmp (menu_path, "<Image>", 7))
|
||||
{
|
||||
plug_in_menus_add_proc (list->data, "/image-menubar",
|
||||
proc_def, menu_path);
|
||||
plug_in_menus_add_proc (list->data, "/dummy-menubar/image-popup",
|
||||
proc_def, menu_path);
|
||||
}
|
||||
else if (! strncmp (menu_path, "<Toolbox>", 9))
|
||||
{
|
||||
plug_in_menus_add_proc (list->data, "/toolbox-menubar",
|
||||
proc_def, menu_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
g_free (name);
|
||||
}
|
||||
|
||||
static void
|
||||
gui_menus_delete_proc (Gimp *gimp,
|
||||
PlugInProcDef *proc_def,
|
||||
const gchar *menu_path)
|
||||
{
|
||||
gchar *name;
|
||||
gchar *p;
|
||||
GList *list;
|
||||
|
||||
name = g_strdup (menu_path);
|
||||
|
||||
p = strchr (name, '>');
|
||||
|
||||
if (p)
|
||||
{
|
||||
p[1] = '\0';
|
||||
|
||||
for (list = gimp_ui_managers_from_name (name);
|
||||
list;
|
||||
list = g_list_next (list))
|
||||
{
|
||||
plug_in_menus_remove_proc (list->data, proc_def);
|
||||
}
|
||||
}
|
||||
|
||||
g_free (name);
|
||||
}
|
||||
|
||||
static void
|
||||
gui_menus_create_entry (Gimp *gimp,
|
||||
PlugInProcDef *proc_def,
|
||||
|
@ -389,45 +455,14 @@ gui_menus_create_entry (Gimp *gimp,
|
|||
}
|
||||
}
|
||||
|
||||
for (list = gimp_ui_managers_from_name ("<Image>");
|
||||
list;
|
||||
list = g_list_next (list))
|
||||
if (menu_path == NULL)
|
||||
{
|
||||
if (menu_path == NULL)
|
||||
{
|
||||
GList *path;
|
||||
|
||||
for (path = proc_def->menu_paths; path; path = g_list_next (path))
|
||||
{
|
||||
if (! strncmp (path->data, "<Toolbox>", 9))
|
||||
{
|
||||
plug_in_menus_add_proc (list->data, "/toolbox-menubar",
|
||||
proc_def, path->data);
|
||||
}
|
||||
else if (! strncmp (path->data, "<Image>", 7))
|
||||
{
|
||||
plug_in_menus_add_proc (list->data, "/image-menubar",
|
||||
proc_def, path->data);
|
||||
plug_in_menus_add_proc (list->data, "/dummy-menubar/image-popup",
|
||||
proc_def, path->data);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! strncmp (menu_path, "<Toolbox>", 9))
|
||||
{
|
||||
plug_in_menus_add_proc (list->data, "/toolbox-menubar",
|
||||
proc_def, menu_path);
|
||||
}
|
||||
else if (! strncmp (menu_path, "<Image>", 7))
|
||||
{
|
||||
plug_in_menus_add_proc (list->data, "/image-menubar",
|
||||
proc_def, menu_path);
|
||||
plug_in_menus_add_proc (list->data, "/dummy-menubar/image-popup",
|
||||
proc_def, menu_path);
|
||||
}
|
||||
}
|
||||
for (list = proc_def->menu_paths; list; list = g_list_next (list))
|
||||
gui_menus_add_proc (gimp, proc_def, list->data);
|
||||
}
|
||||
else
|
||||
{
|
||||
gui_menus_add_proc (gimp, proc_def, menu_path);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -437,12 +472,8 @@ gui_menus_delete_entry (Gimp *gimp,
|
|||
{
|
||||
GList *list;
|
||||
|
||||
for (list = gimp_ui_managers_from_name ("<Image>");
|
||||
list;
|
||||
list = g_list_next (list))
|
||||
{
|
||||
plug_in_menus_remove_proc (list->data, proc_def);
|
||||
}
|
||||
for (list = proc_def->menu_paths; list; list = g_list_next (list))
|
||||
gui_menus_delete_proc (gimp, proc_def, list->data);
|
||||
|
||||
for (list = gimp_action_groups_from_name ("plug-in");
|
||||
list;
|
||||
|
|
|
@ -87,8 +87,6 @@ menus_init (Gimp *gimp,
|
|||
gimp_menu_factory_manager_register (global_menu_factory, "<Image>",
|
||||
"file",
|
||||
"context",
|
||||
"debug",
|
||||
"help",
|
||||
"edit",
|
||||
"select",
|
||||
"view",
|
||||
|
@ -102,8 +100,6 @@ menus_init (Gimp *gimp,
|
|||
"plug-in",
|
||||
"qmask",
|
||||
NULL,
|
||||
"/toolbox-menubar",
|
||||
"toolbox-menu.xml", toolbox_menu_setup,
|
||||
"/image-menubar",
|
||||
"image-menu.xml", image_menu_setup,
|
||||
"/dummy-menubar",
|
||||
|
@ -112,6 +108,27 @@ menus_init (Gimp *gimp,
|
|||
"qmask-menu.xml", NULL,
|
||||
NULL);
|
||||
|
||||
gimp_menu_factory_manager_register (global_menu_factory, "<Toolbox>",
|
||||
"file",
|
||||
"context",
|
||||
"debug",
|
||||
"help",
|
||||
"edit",
|
||||
"select",
|
||||
"image",
|
||||
"drawable",
|
||||
"layers",
|
||||
"channels",
|
||||
"vectors",
|
||||
"tools",
|
||||
"dialogs",
|
||||
"plug-in",
|
||||
"qmask",
|
||||
NULL,
|
||||
"/toolbox-menubar",
|
||||
"toolbox-menu.xml", toolbox_menu_setup,
|
||||
NULL);
|
||||
|
||||
gimp_menu_factory_manager_register (global_menu_factory, "<Dock>",
|
||||
"file",
|
||||
"context",
|
||||
|
|
|
@ -142,11 +142,7 @@ plug_in_menus_setup (GimpUIManager *manager,
|
|||
|
||||
for (path = proc_def->menu_paths; path; path = g_list_next (path))
|
||||
{
|
||||
if ((! strncmp (path->data, "<Toolbox>", 9) &&
|
||||
! strcmp (ui_path, "/toolbox-menubar")) ||
|
||||
(! strncmp (path->data, "<Image>", 7) &&
|
||||
(! strcmp (ui_path, "/image-menubar") ||
|
||||
! strcmp (ui_path, "/dummy-menubar/image-popup"))))
|
||||
if (! strncmp (path->data, manager->name, strlen (manager->name)))
|
||||
{
|
||||
PlugInMenuEntry *entry = g_new0 (PlugInMenuEntry, 1);
|
||||
const gchar *progname;
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
#include "config/gimpguiconfig.h"
|
||||
|
||||
#include "core/gimp.h"
|
||||
#include "core/gimpcontainer.h"
|
||||
#include "core/gimpcontext.h"
|
||||
#include "core/gimpmarshal.h"
|
||||
|
||||
|
@ -39,8 +40,10 @@
|
|||
#include "gimpdockable.h"
|
||||
#include "gimpdockbook.h"
|
||||
#include "gimphelp-ids.h"
|
||||
#include "gimpmenufactory.h"
|
||||
#include "gimpmessagebox.h"
|
||||
#include "gimpmessagedialog.h"
|
||||
#include "gimpuimanager.h"
|
||||
#include "gimpwidgets-utils.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
@ -94,6 +97,12 @@ static void gimp_dock_real_book_added (GimpDock *dock,
|
|||
static void gimp_dock_real_book_removed (GimpDock *dock,
|
||||
GimpDockbook *dockbook);
|
||||
|
||||
static void gimp_dock_display_changed (GimpContext *context,
|
||||
GimpObject *display,
|
||||
GimpDock *dock);
|
||||
static void gimp_dock_image_flush (GimpImage *image,
|
||||
GimpDock *dock);
|
||||
|
||||
static GtkWidget * gimp_dock_separator_new (GimpDock *dock);
|
||||
static void gimp_dock_separator_drag_leave (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
|
@ -152,13 +161,9 @@ gimp_dock_get_type (void)
|
|||
static void
|
||||
gimp_dock_class_init (GimpDockClass *klass)
|
||||
{
|
||||
GObjectClass *object_class;
|
||||
GtkObjectClass *gtk_object_class;
|
||||
GtkWidgetClass *widget_class;
|
||||
|
||||
object_class = G_OBJECT_CLASS (klass);
|
||||
gtk_object_class = GTK_OBJECT_CLASS (klass);
|
||||
widget_class = GTK_WIDGET_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -196,6 +201,8 @@ gimp_dock_class_init (GimpDockClass *klass)
|
|||
klass->book_added = gimp_dock_real_book_added;
|
||||
klass->book_removed = gimp_dock_real_book_removed;
|
||||
|
||||
klass->ui_manager_name = "<Dock>";
|
||||
|
||||
g_object_class_install_property (object_class, PROP_CONTEXT,
|
||||
g_param_spec_object ("context", NULL, NULL,
|
||||
GIMP_TYPE_CONTEXT,
|
||||
|
@ -246,6 +253,50 @@ gimp_dock_init (GimpDock *dock)
|
|||
gtk_widget_show (separator);
|
||||
}
|
||||
|
||||
static GObject *
|
||||
gimp_dock_constructor (GType type,
|
||||
guint n_params,
|
||||
GObjectConstructParam *params)
|
||||
{
|
||||
GObject *object;
|
||||
GimpDock *dock;
|
||||
GimpGuiConfig *config;
|
||||
GtkAccelGroup *accel_group;
|
||||
|
||||
object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
|
||||
|
||||
dock = GIMP_DOCK (object);
|
||||
|
||||
g_assert (GIMP_IS_CONTEXT (dock->context));
|
||||
g_assert (GIMP_IS_DIALOG_FACTORY (dock->dialog_factory));
|
||||
|
||||
config = GIMP_GUI_CONFIG (dock->context->gimp->config);
|
||||
|
||||
gimp_window_set_hint (GTK_WINDOW (dock), config->dock_window_hint);
|
||||
|
||||
dock->ui_manager =
|
||||
gimp_menu_factory_manager_new (dock->dialog_factory->menu_factory,
|
||||
GIMP_DOCK_GET_CLASS (dock)->ui_manager_name,
|
||||
dock,
|
||||
config->tearoff_menus);
|
||||
|
||||
accel_group =
|
||||
gtk_ui_manager_get_accel_group (GTK_UI_MANAGER (dock->ui_manager));
|
||||
|
||||
gtk_window_add_accel_group (GTK_WINDOW (object), accel_group);
|
||||
|
||||
dock->image_flush_handler_id =
|
||||
gimp_container_add_handler (dock->context->gimp->images, "flush",
|
||||
G_CALLBACK (gimp_dock_image_flush),
|
||||
dock);
|
||||
|
||||
g_signal_connect_object (dock->context, "display-changed",
|
||||
G_CALLBACK (gimp_dock_display_changed),
|
||||
dock, 0);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dock_set_property (GObject *object,
|
||||
guint property_id,
|
||||
|
@ -270,9 +321,9 @@ gimp_dock_set_property (GObject *object,
|
|||
|
||||
static void
|
||||
gimp_dock_get_property (GObject *object,
|
||||
guint property_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
guint property_id,
|
||||
GValue *value,
|
||||
GParamSpec *pspec)
|
||||
{
|
||||
GimpDock *dock = GIMP_DOCK (object);
|
||||
|
||||
|
@ -290,29 +341,6 @@ gimp_dock_get_property (GObject *object,
|
|||
}
|
||||
}
|
||||
|
||||
static GObject *
|
||||
gimp_dock_constructor (GType type,
|
||||
guint n_params,
|
||||
GObjectConstructParam *params)
|
||||
{
|
||||
GObject *object;
|
||||
GimpDock *dock;
|
||||
GimpGuiConfig *config;
|
||||
|
||||
object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
|
||||
|
||||
dock = GIMP_DOCK (object);
|
||||
|
||||
g_assert (GIMP_IS_CONTEXT (dock->context));
|
||||
g_assert (GIMP_IS_DIALOG_FACTORY (dock->dialog_factory));
|
||||
|
||||
config = GIMP_GUI_CONFIG (dock->context->gimp->config);
|
||||
|
||||
gimp_window_set_hint (GTK_WINDOW (dock), config->dock_window_hint);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dock_destroy (GtkObject *object)
|
||||
{
|
||||
|
@ -321,6 +349,19 @@ gimp_dock_destroy (GtkObject *object)
|
|||
while (dock->dockbooks)
|
||||
gimp_dock_remove_book (dock, GIMP_DOCKBOOK (dock->dockbooks->data));
|
||||
|
||||
if (dock->image_flush_handler_id)
|
||||
{
|
||||
gimp_container_remove_handler (dock->context->gimp->images,
|
||||
dock->image_flush_handler_id);
|
||||
dock->image_flush_handler_id = 0;
|
||||
}
|
||||
|
||||
if (dock->ui_manager)
|
||||
{
|
||||
g_object_unref (dock->ui_manager);
|
||||
dock->ui_manager = NULL;
|
||||
}
|
||||
|
||||
if (dock->context)
|
||||
{
|
||||
g_object_unref (dock->context);
|
||||
|
@ -448,49 +489,8 @@ gimp_dock_real_book_removed (GimpDock *dock,
|
|||
gtk_widget_destroy (GTK_WIDGET (dock));
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
gimp_dock_separator_new (GimpDock *dock)
|
||||
{
|
||||
GtkWidget *event_box;
|
||||
GtkWidget *frame;
|
||||
gint separator_height;
|
||||
|
||||
event_box = gtk_event_box_new ();
|
||||
|
||||
gtk_widget_set_name (event_box, "gimp-dock-separator");
|
||||
|
||||
gtk_widget_style_get (GTK_WIDGET (dock),
|
||||
"separator_height", &separator_height,
|
||||
NULL);
|
||||
|
||||
gtk_widget_set_size_request (event_box, -1, separator_height);
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
|
||||
gtk_container_add (GTK_CONTAINER (event_box), frame);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
gimp_help_set_help_data (event_box,
|
||||
_("You can drop dockable dialogs here."),
|
||||
GIMP_HELP_DOCK_SEPARATOR);
|
||||
|
||||
gtk_drag_dest_set (GTK_WIDGET (event_box),
|
||||
GTK_DEST_DEFAULT_ALL,
|
||||
dialog_target_table, G_N_ELEMENTS (dialog_target_table),
|
||||
GDK_ACTION_MOVE);
|
||||
|
||||
g_signal_connect (event_box, "drag_leave",
|
||||
G_CALLBACK (gimp_dock_separator_drag_leave),
|
||||
NULL);
|
||||
g_signal_connect (event_box, "drag_motion",
|
||||
G_CALLBACK (gimp_dock_separator_drag_motion),
|
||||
NULL);
|
||||
g_signal_connect (event_box, "drag_drop",
|
||||
G_CALLBACK (gimp_dock_separator_drag_drop),
|
||||
dock);
|
||||
|
||||
return event_box;
|
||||
}
|
||||
/* public functions */
|
||||
|
||||
void
|
||||
gimp_dock_setup (GimpDock *dock,
|
||||
|
@ -710,6 +710,74 @@ gimp_dock_remove_book (GimpDock *dock,
|
|||
g_object_unref (dockbook);
|
||||
}
|
||||
|
||||
|
||||
/* private functions */
|
||||
|
||||
static void
|
||||
gimp_dock_display_changed (GimpContext *context,
|
||||
GimpObject *display,
|
||||
GimpDock *dock)
|
||||
{
|
||||
gimp_ui_manager_update (dock->ui_manager, display);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dock_image_flush (GimpImage *image,
|
||||
GimpDock *dock)
|
||||
{
|
||||
if (image == gimp_context_get_image (dock->context))
|
||||
{
|
||||
GimpObject *display = gimp_context_get_display (dock->context);
|
||||
|
||||
if (display)
|
||||
gimp_ui_manager_update (dock->ui_manager, display);
|
||||
}
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
gimp_dock_separator_new (GimpDock *dock)
|
||||
{
|
||||
GtkWidget *event_box;
|
||||
GtkWidget *frame;
|
||||
gint separator_height;
|
||||
|
||||
event_box = gtk_event_box_new ();
|
||||
|
||||
gtk_widget_set_name (event_box, "gimp-dock-separator");
|
||||
|
||||
gtk_widget_style_get (GTK_WIDGET (dock),
|
||||
"separator_height", &separator_height,
|
||||
NULL);
|
||||
|
||||
gtk_widget_set_size_request (event_box, -1, separator_height);
|
||||
|
||||
frame = gtk_frame_new (NULL);
|
||||
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT);
|
||||
gtk_container_add (GTK_CONTAINER (event_box), frame);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
gimp_help_set_help_data (event_box,
|
||||
_("You can drop dockable dialogs here."),
|
||||
GIMP_HELP_DOCK_SEPARATOR);
|
||||
|
||||
gtk_drag_dest_set (GTK_WIDGET (event_box),
|
||||
GTK_DEST_DEFAULT_ALL,
|
||||
dialog_target_table, G_N_ELEMENTS (dialog_target_table),
|
||||
GDK_ACTION_MOVE);
|
||||
|
||||
g_signal_connect (event_box, "drag_leave",
|
||||
G_CALLBACK (gimp_dock_separator_drag_leave),
|
||||
NULL);
|
||||
g_signal_connect (event_box, "drag_motion",
|
||||
G_CALLBACK (gimp_dock_separator_drag_motion),
|
||||
NULL);
|
||||
g_signal_connect (event_box, "drag_drop",
|
||||
G_CALLBACK (gimp_dock_separator_drag_drop),
|
||||
dock);
|
||||
|
||||
return event_box;
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_dock_separator_drag_leave (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
|
|
|
@ -43,6 +43,9 @@ struct _GimpDock
|
|||
GimpDialogFactory *dialog_factory;
|
||||
GimpContext *context;
|
||||
|
||||
GimpUIManager *ui_manager;
|
||||
GQuark image_flush_handler_id;
|
||||
|
||||
GtkWidget *main_vbox;
|
||||
GtkWidget *vbox;
|
||||
|
||||
|
@ -65,6 +68,8 @@ struct _GimpDockClass
|
|||
GimpDockbook *dockbook);
|
||||
void (* book_removed) (GimpDock *dock,
|
||||
GimpDockbook *dockbook);
|
||||
|
||||
const gchar *ui_manager_name;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -43,9 +43,7 @@
|
|||
#include "gimpdockable.h"
|
||||
#include "gimpdockbook.h"
|
||||
#include "gimphelp-ids.h"
|
||||
#include "gimpmenufactory.h"
|
||||
#include "gimpsessioninfo.h"
|
||||
#include "gimpuimanager.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
@ -86,16 +84,11 @@ static void gimp_image_dock_factory_display_changed (GimpContext *context,
|
|||
static void gimp_image_dock_factory_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_display_changed (GimpContext *context,
|
||||
GimpObject *display,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_auto_clicked (GtkWidget *widget,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_image_flush (GimpImage *gimage,
|
||||
GimpDock *dock);
|
||||
|
||||
|
||||
static GimpDockClass *parent_class = NULL;
|
||||
|
@ -132,15 +125,10 @@ gimp_image_dock_get_type (void)
|
|||
static void
|
||||
gimp_image_dock_class_init (GimpImageDockClass *klass)
|
||||
{
|
||||
GObjectClass *object_class;
|
||||
GtkObjectClass *gtk_object_class;
|
||||
GtkWidgetClass *widget_class;
|
||||
GimpDockClass *dock_class;
|
||||
|
||||
object_class = G_OBJECT_CLASS (klass);
|
||||
gtk_object_class = GTK_OBJECT_CLASS (klass);
|
||||
widget_class = GTK_WIDGET_CLASS (klass);
|
||||
dock_class = GIMP_DOCK_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||
GimpDockClass *dock_class = GIMP_DOCK_CLASS (klass);
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -202,13 +190,13 @@ gimp_image_dock_init (GimpImageDock *dock)
|
|||
|
||||
dock->auto_button = gtk_toggle_button_new_with_label (_("Auto"));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dock->auto_button),
|
||||
dock->auto_follow_active);
|
||||
dock->auto_follow_active);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), dock->auto_button, FALSE, FALSE, 0);
|
||||
gtk_widget_show (dock->auto_button);
|
||||
|
||||
g_signal_connect (dock->auto_button, "clicked",
|
||||
G_CALLBACK (gimp_image_dock_auto_clicked),
|
||||
dock);
|
||||
G_CALLBACK (gimp_image_dock_auto_clicked),
|
||||
dock);
|
||||
|
||||
gimp_help_set_help_data (dock->auto_button,
|
||||
_("When enabled the dialog automatically "
|
||||
|
@ -221,27 +209,13 @@ gimp_image_dock_constructor (GType type,
|
|||
guint n_params,
|
||||
GObjectConstructParam *params)
|
||||
{
|
||||
GObject *object;
|
||||
GimpImageDock *dock;
|
||||
GimpMenuFactory *menu_factory;
|
||||
GtkUIManager *ui_manager;
|
||||
GtkAccelGroup *accel_group;
|
||||
GObject *object;
|
||||
GimpImageDock *dock;
|
||||
|
||||
object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
|
||||
|
||||
dock = GIMP_IMAGE_DOCK (object);
|
||||
|
||||
menu_factory = GIMP_DOCK (object)->dialog_factory->menu_factory;
|
||||
|
||||
dock->ui_manager = gimp_menu_factory_manager_new (menu_factory, "<Dock>",
|
||||
dock, FALSE);
|
||||
|
||||
ui_manager = GTK_UI_MANAGER (dock->ui_manager);
|
||||
|
||||
accel_group = gtk_ui_manager_get_accel_group (ui_manager);
|
||||
|
||||
gtk_window_add_accel_group (GTK_WINDOW (object), accel_group);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
|
@ -256,19 +230,6 @@ gimp_image_dock_destroy (GtkObject *object)
|
|||
dock->update_title_idle_id = 0;
|
||||
}
|
||||
|
||||
if (dock->image_flush_handler_id)
|
||||
{
|
||||
gimp_container_remove_handler (dock->image_container,
|
||||
dock->image_flush_handler_id);
|
||||
dock->image_flush_handler_id = 0;
|
||||
}
|
||||
|
||||
if (dock->ui_manager)
|
||||
{
|
||||
g_object_unref (dock->ui_manager);
|
||||
dock->ui_manager = NULL;
|
||||
}
|
||||
|
||||
/* remove the image menu and the auto button manually here because
|
||||
* of weird cross-connections with GimpDock's context
|
||||
*/
|
||||
|
@ -277,7 +238,7 @@ gimp_image_dock_destroy (GtkObject *object)
|
|||
dock->image_combo->parent)
|
||||
{
|
||||
gtk_container_remove (GTK_CONTAINER (GIMP_DOCK (dock)->main_vbox),
|
||||
dock->image_combo->parent);
|
||||
dock->image_combo->parent);
|
||||
}
|
||||
|
||||
GTK_OBJECT_CLASS (parent_class)->destroy (object);
|
||||
|
@ -305,7 +266,7 @@ gimp_image_dock_style_set (GtkWidget *widget,
|
|||
gtk_widget_style_get (widget,
|
||||
"minimal_width", &minimal_width,
|
||||
"menu_preview_size", &menu_preview_size,
|
||||
NULL);
|
||||
NULL);
|
||||
|
||||
screen = gtk_widget_get_screen (image_dock->image_combo);
|
||||
gtk_icon_size_lookup_for_settings (gtk_settings_get_for_screen (screen),
|
||||
|
@ -316,7 +277,7 @@ gimp_image_dock_style_set (GtkWidget *widget,
|
|||
gtk_widget_style_get (image_dock->auto_button,
|
||||
"focus_line_width", &focus_line_width,
|
||||
"focus_padding", &focus_padding,
|
||||
NULL);
|
||||
NULL);
|
||||
|
||||
ythickness = image_dock->auto_button->style->ythickness;
|
||||
|
||||
|
@ -439,7 +400,7 @@ gimp_image_dock_book_removed (GimpDock *dock,
|
|||
|
||||
GtkWidget *
|
||||
gimp_image_dock_new (GimpDialogFactory *dialog_factory,
|
||||
GimpContainer *image_container,
|
||||
GimpContainer *image_container,
|
||||
GimpContainer *display_container)
|
||||
{
|
||||
GimpImageDock *image_dock;
|
||||
|
@ -463,11 +424,6 @@ gimp_image_dock_new (GimpDialogFactory *dialog_factory,
|
|||
image_dock->image_container = image_container;
|
||||
image_dock->display_container = display_container;
|
||||
|
||||
image_dock->image_flush_handler_id =
|
||||
gimp_container_add_handler (image_container, "flush",
|
||||
G_CALLBACK (gimp_image_dock_image_flush),
|
||||
image_dock);
|
||||
|
||||
gimp_help_connect (GTK_WIDGET (image_dock), gimp_standard_help_func,
|
||||
GIMP_HELP_DOCK, NULL);
|
||||
|
||||
|
@ -497,10 +453,6 @@ gimp_image_dock_new (GimpDialogFactory *dialog_factory,
|
|||
image_dock,
|
||||
0);
|
||||
|
||||
g_signal_connect_object (context, "display_changed",
|
||||
G_CALLBACK (gimp_image_dock_display_changed),
|
||||
image_dock,
|
||||
0);
|
||||
g_signal_connect_object (context, "image_changed",
|
||||
G_CALLBACK (gimp_image_dock_image_changed),
|
||||
image_dock,
|
||||
|
@ -629,16 +581,6 @@ gimp_image_dock_factory_image_changed (GimpContext *context,
|
|||
gimp_context_set_image (dock->context, gimage);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_dock_display_changed (GimpContext *context,
|
||||
GimpObject *display,
|
||||
GimpDock *dock)
|
||||
{
|
||||
GimpImageDock *image_dock = GIMP_IMAGE_DOCK (dock);
|
||||
|
||||
gimp_ui_manager_update (image_dock->ui_manager, display);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_dock_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
|
@ -742,21 +684,3 @@ gimp_image_dock_auto_clicked (GtkWidget *widget,
|
|||
GIMP_CONTEXT_PROP_IMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_dock_image_flush (GimpImage *gimage,
|
||||
GimpDock *dock)
|
||||
{
|
||||
GimpImageDock *image_dock = GIMP_IMAGE_DOCK (dock);
|
||||
GimpImage *dock_image;
|
||||
|
||||
dock_image = gimp_context_get_image (dock->context);
|
||||
|
||||
if (dock_image == gimage)
|
||||
{
|
||||
GimpObject *display = gimp_context_get_display (dock->context);
|
||||
|
||||
if (display)
|
||||
gimp_ui_manager_update (image_dock->ui_manager, display);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,9 +46,6 @@ struct _GimpImageDock
|
|||
gboolean show_image_menu;
|
||||
gboolean auto_follow_active;
|
||||
|
||||
GimpUIManager *ui_manager;
|
||||
GQuark image_flush_handler_id;
|
||||
|
||||
GtkWidget *image_combo;
|
||||
GtkWidget *auto_button;
|
||||
|
||||
|
|
|
@ -43,9 +43,7 @@
|
|||
#include "gimpdockable.h"
|
||||
#include "gimpdockbook.h"
|
||||
#include "gimphelp-ids.h"
|
||||
#include "gimpmenufactory.h"
|
||||
#include "gimpsessioninfo.h"
|
||||
#include "gimpuimanager.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
@ -86,16 +84,11 @@ static void gimp_image_dock_factory_display_changed (GimpContext *context,
|
|||
static void gimp_image_dock_factory_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_display_changed (GimpContext *context,
|
||||
GimpObject *display,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_auto_clicked (GtkWidget *widget,
|
||||
GimpDock *dock);
|
||||
static void gimp_image_dock_image_flush (GimpImage *gimage,
|
||||
GimpDock *dock);
|
||||
|
||||
|
||||
static GimpDockClass *parent_class = NULL;
|
||||
|
@ -132,15 +125,10 @@ gimp_image_dock_get_type (void)
|
|||
static void
|
||||
gimp_image_dock_class_init (GimpImageDockClass *klass)
|
||||
{
|
||||
GObjectClass *object_class;
|
||||
GtkObjectClass *gtk_object_class;
|
||||
GtkWidgetClass *widget_class;
|
||||
GimpDockClass *dock_class;
|
||||
|
||||
object_class = G_OBJECT_CLASS (klass);
|
||||
gtk_object_class = GTK_OBJECT_CLASS (klass);
|
||||
widget_class = GTK_WIDGET_CLASS (klass);
|
||||
dock_class = GIMP_DOCK_CLASS (klass);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
||||
GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
|
||||
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
|
||||
GimpDockClass *dock_class = GIMP_DOCK_CLASS (klass);
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
|
@ -202,13 +190,13 @@ gimp_image_dock_init (GimpImageDock *dock)
|
|||
|
||||
dock->auto_button = gtk_toggle_button_new_with_label (_("Auto"));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dock->auto_button),
|
||||
dock->auto_follow_active);
|
||||
dock->auto_follow_active);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), dock->auto_button, FALSE, FALSE, 0);
|
||||
gtk_widget_show (dock->auto_button);
|
||||
|
||||
g_signal_connect (dock->auto_button, "clicked",
|
||||
G_CALLBACK (gimp_image_dock_auto_clicked),
|
||||
dock);
|
||||
G_CALLBACK (gimp_image_dock_auto_clicked),
|
||||
dock);
|
||||
|
||||
gimp_help_set_help_data (dock->auto_button,
|
||||
_("When enabled the dialog automatically "
|
||||
|
@ -221,27 +209,13 @@ gimp_image_dock_constructor (GType type,
|
|||
guint n_params,
|
||||
GObjectConstructParam *params)
|
||||
{
|
||||
GObject *object;
|
||||
GimpImageDock *dock;
|
||||
GimpMenuFactory *menu_factory;
|
||||
GtkUIManager *ui_manager;
|
||||
GtkAccelGroup *accel_group;
|
||||
GObject *object;
|
||||
GimpImageDock *dock;
|
||||
|
||||
object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params);
|
||||
|
||||
dock = GIMP_IMAGE_DOCK (object);
|
||||
|
||||
menu_factory = GIMP_DOCK (object)->dialog_factory->menu_factory;
|
||||
|
||||
dock->ui_manager = gimp_menu_factory_manager_new (menu_factory, "<Dock>",
|
||||
dock, FALSE);
|
||||
|
||||
ui_manager = GTK_UI_MANAGER (dock->ui_manager);
|
||||
|
||||
accel_group = gtk_ui_manager_get_accel_group (ui_manager);
|
||||
|
||||
gtk_window_add_accel_group (GTK_WINDOW (object), accel_group);
|
||||
|
||||
return object;
|
||||
}
|
||||
|
||||
|
@ -256,19 +230,6 @@ gimp_image_dock_destroy (GtkObject *object)
|
|||
dock->update_title_idle_id = 0;
|
||||
}
|
||||
|
||||
if (dock->image_flush_handler_id)
|
||||
{
|
||||
gimp_container_remove_handler (dock->image_container,
|
||||
dock->image_flush_handler_id);
|
||||
dock->image_flush_handler_id = 0;
|
||||
}
|
||||
|
||||
if (dock->ui_manager)
|
||||
{
|
||||
g_object_unref (dock->ui_manager);
|
||||
dock->ui_manager = NULL;
|
||||
}
|
||||
|
||||
/* remove the image menu and the auto button manually here because
|
||||
* of weird cross-connections with GimpDock's context
|
||||
*/
|
||||
|
@ -277,7 +238,7 @@ gimp_image_dock_destroy (GtkObject *object)
|
|||
dock->image_combo->parent)
|
||||
{
|
||||
gtk_container_remove (GTK_CONTAINER (GIMP_DOCK (dock)->main_vbox),
|
||||
dock->image_combo->parent);
|
||||
dock->image_combo->parent);
|
||||
}
|
||||
|
||||
GTK_OBJECT_CLASS (parent_class)->destroy (object);
|
||||
|
@ -305,7 +266,7 @@ gimp_image_dock_style_set (GtkWidget *widget,
|
|||
gtk_widget_style_get (widget,
|
||||
"minimal_width", &minimal_width,
|
||||
"menu_preview_size", &menu_preview_size,
|
||||
NULL);
|
||||
NULL);
|
||||
|
||||
screen = gtk_widget_get_screen (image_dock->image_combo);
|
||||
gtk_icon_size_lookup_for_settings (gtk_settings_get_for_screen (screen),
|
||||
|
@ -316,7 +277,7 @@ gimp_image_dock_style_set (GtkWidget *widget,
|
|||
gtk_widget_style_get (image_dock->auto_button,
|
||||
"focus_line_width", &focus_line_width,
|
||||
"focus_padding", &focus_padding,
|
||||
NULL);
|
||||
NULL);
|
||||
|
||||
ythickness = image_dock->auto_button->style->ythickness;
|
||||
|
||||
|
@ -439,7 +400,7 @@ gimp_image_dock_book_removed (GimpDock *dock,
|
|||
|
||||
GtkWidget *
|
||||
gimp_image_dock_new (GimpDialogFactory *dialog_factory,
|
||||
GimpContainer *image_container,
|
||||
GimpContainer *image_container,
|
||||
GimpContainer *display_container)
|
||||
{
|
||||
GimpImageDock *image_dock;
|
||||
|
@ -463,11 +424,6 @@ gimp_image_dock_new (GimpDialogFactory *dialog_factory,
|
|||
image_dock->image_container = image_container;
|
||||
image_dock->display_container = display_container;
|
||||
|
||||
image_dock->image_flush_handler_id =
|
||||
gimp_container_add_handler (image_container, "flush",
|
||||
G_CALLBACK (gimp_image_dock_image_flush),
|
||||
image_dock);
|
||||
|
||||
gimp_help_connect (GTK_WIDGET (image_dock), gimp_standard_help_func,
|
||||
GIMP_HELP_DOCK, NULL);
|
||||
|
||||
|
@ -497,10 +453,6 @@ gimp_image_dock_new (GimpDialogFactory *dialog_factory,
|
|||
image_dock,
|
||||
0);
|
||||
|
||||
g_signal_connect_object (context, "display_changed",
|
||||
G_CALLBACK (gimp_image_dock_display_changed),
|
||||
image_dock,
|
||||
0);
|
||||
g_signal_connect_object (context, "image_changed",
|
||||
G_CALLBACK (gimp_image_dock_image_changed),
|
||||
image_dock,
|
||||
|
@ -629,16 +581,6 @@ gimp_image_dock_factory_image_changed (GimpContext *context,
|
|||
gimp_context_set_image (dock->context, gimage);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_dock_display_changed (GimpContext *context,
|
||||
GimpObject *display,
|
||||
GimpDock *dock)
|
||||
{
|
||||
GimpImageDock *image_dock = GIMP_IMAGE_DOCK (dock);
|
||||
|
||||
gimp_ui_manager_update (image_dock->ui_manager, display);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_dock_image_changed (GimpContext *context,
|
||||
GimpImage *gimage,
|
||||
|
@ -742,21 +684,3 @@ gimp_image_dock_auto_clicked (GtkWidget *widget,
|
|||
GIMP_CONTEXT_PROP_IMAGE);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_image_dock_image_flush (GimpImage *gimage,
|
||||
GimpDock *dock)
|
||||
{
|
||||
GimpImageDock *image_dock = GIMP_IMAGE_DOCK (dock);
|
||||
GimpImage *dock_image;
|
||||
|
||||
dock_image = gimp_context_get_image (dock->context);
|
||||
|
||||
if (dock_image == gimage)
|
||||
{
|
||||
GimpObject *display = gimp_context_get_display (dock->context);
|
||||
|
||||
if (display)
|
||||
gimp_ui_manager_update (image_dock->ui_manager, display);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,9 +46,6 @@ struct _GimpImageDock
|
|||
gboolean show_image_menu;
|
||||
gboolean auto_follow_active;
|
||||
|
||||
GimpUIManager *ui_manager;
|
||||
GQuark image_flush_handler_id;
|
||||
|
||||
GtkWidget *image_combo;
|
||||
GtkWidget *auto_button;
|
||||
|
||||
|
|
|
@ -163,6 +163,8 @@ gimp_toolbox_class_init (GimpToolboxClass *klass)
|
|||
dock_class->book_added = gimp_toolbox_book_added;
|
||||
dock_class->book_removed = gimp_toolbox_book_removed;
|
||||
|
||||
dock_class->ui_manager_name = "<Toolbox>";
|
||||
|
||||
gtk_widget_class_install_style_property
|
||||
(widget_class, g_param_spec_enum ("tool_icon_size",
|
||||
NULL, NULL,
|
||||
|
@ -218,7 +220,7 @@ gimp_toolbox_constructor (GType type,
|
|||
gtk_box_reorder_child (GTK_BOX (main_vbox), vbox, 0);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
manager = gimp_ui_managers_from_name ("<Image>")->data;
|
||||
manager = GIMP_DOCK (toolbox)->ui_manager;
|
||||
|
||||
toolbox->menu_bar = gimp_ui_manager_ui_get (manager, "/toolbox-menubar");
|
||||
|
||||
|
@ -228,9 +230,6 @@ gimp_toolbox_constructor (GType type,
|
|||
gtk_widget_show (toolbox->menu_bar);
|
||||
}
|
||||
|
||||
gtk_window_add_accel_group (GTK_WINDOW (toolbox),
|
||||
gtk_ui_manager_get_accel_group (GTK_UI_MANAGER (manager)));
|
||||
|
||||
toolbox->tool_wbox = gtk_hwrap_box_new (FALSE);
|
||||
gtk_wrap_box_set_justify (GTK_WRAP_BOX (toolbox->tool_wbox), GTK_JUSTIFY_TOP);
|
||||
gtk_wrap_box_set_line_justify (GTK_WRAP_BOX (toolbox->tool_wbox),
|
||||
|
@ -693,15 +692,9 @@ static void
|
|||
toolbox_create_tools (GimpToolbox *toolbox,
|
||||
GimpContext *context)
|
||||
{
|
||||
GimpUIManager *ui_manager;
|
||||
GimpToolInfo *active_tool;
|
||||
GList *list;
|
||||
GSList *group = NULL;
|
||||
|
||||
ui_manager = gimp_ui_managers_from_name ("<Image>")->data;
|
||||
|
||||
if (ui_manager)
|
||||
gimp_ui_manager_ui_get (ui_manager, "/dummy-menubar");
|
||||
GimpToolInfo *active_tool;
|
||||
GList *list;
|
||||
GSList *group = NULL;
|
||||
|
||||
active_tool = gimp_context_get_tool (context);
|
||||
|
||||
|
@ -749,7 +742,7 @@ toolbox_create_tools (GimpToolbox *toolbox,
|
|||
G_CALLBACK (toolbox_tool_button_press),
|
||||
toolbox);
|
||||
|
||||
if (ui_manager)
|
||||
if (GIMP_DOCK (toolbox)->ui_manager)
|
||||
{
|
||||
GtkAction *action;
|
||||
const gchar *identifier;
|
||||
|
@ -764,37 +757,12 @@ toolbox_create_tools (GimpToolbox *toolbox,
|
|||
name = g_strdup_printf ("tools-%s", tmp);
|
||||
g_free (tmp);
|
||||
|
||||
action = gimp_ui_manager_find_action (ui_manager, "tools", name);
|
||||
action = gimp_ui_manager_find_action (GIMP_DOCK (toolbox)->ui_manager,
|
||||
"tools", name);
|
||||
|
||||
g_free (name);
|
||||
|
||||
#if HAVE_GTK_ACTION_GET_ACCEL_CLOSURE
|
||||
accel_closure = gtk_action_get_accel_closure (action);
|
||||
#else
|
||||
{
|
||||
GSList *list;
|
||||
|
||||
for (list = gtk_action_get_proxies (action);
|
||||
list;
|
||||
list = g_slist_next (list))
|
||||
{
|
||||
if (GTK_IS_MENU_ITEM (list->data))
|
||||
{
|
||||
GtkWidget *label = GTK_BIN (list->data)->child;
|
||||
|
||||
if (GTK_IS_ACCEL_LABEL (label))
|
||||
{
|
||||
g_object_get (label,
|
||||
"accel-closure", &accel_closure,
|
||||
NULL);
|
||||
|
||||
if (accel_closure)
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
accel_closure = gimp_action_get_accel_closure (action);
|
||||
|
||||
if (accel_closure)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue