From 9dd403f7b289c30325ff42ff699ed1b82ca5759f Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 25 Jan 2002 18:34:33 +0000 Subject: [PATCH] CPPFLAGS: added -DGTK_DISABLE_DEPRECATED 2002-01-25 Michael Natterer * configure.in: CPPFLAGS: added -DGTK_DISABLE_DEPRECATED * libgimpwidgets/gimpdialog.c: still use the deprecated gtk_window_set_policy() but spit out a #warning. * app/widgets/widgets-types.h * app/widgets/gimpitemfactory.[ch]: made it a GtkItemFactory subclass. This way we can reproduce the effect of gtk_item_factory_get_from_path() which is deprectated for good reasons. For GIMP, using it its perfectly OK since we only have one item factory per "". * app/widgets/gimpbrushfactoryview.[ch] * app/widgets/gimpbufferview.[ch] * app/widgets/gimpcontainereditor.[ch] * app/widgets/gimpdatafactoryview.[ch] * app/widgets/gimpdialogfactory.[ch] * app/widgets/gimpdock.c * app/widgets/gimpdockbook.c * app/widgets/gimpdocumentview.[ch] * app/widgets/gimpdrawablelistview.[ch] * app/widgets/gimppreview.c * app/display/gimpdisplayshell-callbacks.c * app/display/gimpdisplayshell.[ch]: pass around GimpItemFactory pointers instead of "const gchar *" item factory identifiers. Replaced gtk_window_set_policy() by gtk_window_set_resizable() and other recommended stuff. * app/gui/about-dialog.c * app/gui/dialogs-constructors.c * app/gui/dialogs.c * app/gui/file-open-dialog.c * app/gui/file-save-dialog.c * app/gui/gradient-editor.c * app/gui/menus.c * app/gui/offset-dialog.c * app/gui/splash.c * app/gui/tips-dialog.c * app/gui/toolbox.c: lots of s/gtk_item_factory_from_path/gimp_item_factory_from_path/, gtk_window_set_policy() replacements, misc fixes. * plug-ins/gdyntext/charmap_window.c * plug-ins/gdyntext/gdyntext_ui.c * plug-ins/gdyntext/message_window.c * plug-ins/imagemap/imap_main.c: replaced gtk_window_set_policy(). --- ChangeLog | 54 ++ app/dialogs/about-dialog.c | 4 +- app/dialogs/dialogs-constructors.c | 27 +- app/dialogs/dialogs.c | 3 +- app/dialogs/file-open-dialog.c | 18 +- app/dialogs/file-save-dialog.c | 14 +- app/dialogs/offset-dialog.c | 2 +- app/dialogs/tips-dialog.c | 6 +- app/display/gimpdisplayshell-callbacks.c | 21 +- app/display/gimpdisplayshell-draw.c | 106 ++-- app/display/gimpdisplayshell-draw.h | 2 +- app/display/gimpdisplayshell.c | 106 ++-- app/display/gimpdisplayshell.h | 2 +- app/gui/about-dialog.c | 4 +- app/gui/dialogs-constructors.c | 27 +- app/gui/dialogs.c | 3 +- app/gui/file-open-dialog.c | 18 +- app/gui/file-save-dialog.c | 14 +- app/gui/gradient-editor.c | 8 +- app/gui/menus.c | 86 ++-- app/gui/offset-dialog.c | 2 +- app/gui/splash.c | 2 +- app/gui/tips-dialog.c | 6 +- app/gui/toolbox.c | 24 +- app/menus/menus.c | 86 ++-- app/widgets/gimpbrushfactoryview.c | 2 +- app/widgets/gimpbrushfactoryview.h | 2 +- app/widgets/gimpbufferview.c | 14 +- app/widgets/gimpbufferview.h | 14 +- app/widgets/gimpcontainereditor.c | 24 +- app/widgets/gimpcontainereditor.h | 5 +- app/widgets/gimpdatafactoryview.c | 4 +- app/widgets/gimpdatafactoryview.h | 4 +- app/widgets/gimpdialogfactory.c | 5 +- app/widgets/gimpdialogfactory.h | 4 +- app/widgets/gimpdock.c | 2 +- app/widgets/gimpdockbook.c | 16 +- app/widgets/gimpdocumentview.c | 14 +- app/widgets/gimpdocumentview.h | 14 +- app/widgets/gimpdrawablelistview.c | 17 +- app/widgets/gimpdrawablelistview.h | 4 +- app/widgets/gimpdrawabletreeview.c | 17 +- app/widgets/gimpdrawabletreeview.h | 4 +- app/widgets/gimpgradienteditor.c | 8 +- app/widgets/gimpitemfactory.c | 628 ++++++++++++++--------- app/widgets/gimpitemfactory.h | 152 +++--- app/widgets/gimpitemlistview.c | 17 +- app/widgets/gimpitemlistview.h | 4 +- app/widgets/gimpitemtreeview.c | 17 +- app/widgets/gimpitemtreeview.h | 4 +- app/widgets/gimppreview.c | 2 +- app/widgets/gimppreviewrenderer.c | 2 +- app/widgets/gimptoolbox.c | 24 +- app/widgets/gimpview.c | 2 +- app/widgets/gimpviewrenderer.c | 2 +- app/widgets/widgets-types.h | 1 + configure.in | 2 +- libgimpwidgets/gimpdialog.c | 5 + plug-ins/gdyntext/charmap_window.c | 3 +- plug-ins/gdyntext/gdyntext_ui.c | 4 +- plug-ins/gdyntext/message_window.c | 3 +- plug-ins/imagemap/imap_main.c | 3 +- 62 files changed, 980 insertions(+), 714 deletions(-) diff --git a/ChangeLog b/ChangeLog index 56a6b91a51..b2feea3f70 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,57 @@ +2002-01-25 Michael Natterer + + * configure.in: CPPFLAGS: added -DGTK_DISABLE_DEPRECATED + + * libgimpwidgets/gimpdialog.c: still use the deprecated + gtk_window_set_policy() but spit out a #warning. + + * app/widgets/widgets-types.h + * app/widgets/gimpitemfactory.[ch]: made it a GtkItemFactory + subclass. This way we can reproduce the effect of + gtk_item_factory_get_from_path() which is deprectated for good + reasons. For GIMP, using it its perfectly OK since we only have + one item factory per "". + + * app/widgets/gimpbrushfactoryview.[ch] + * app/widgets/gimpbufferview.[ch] + * app/widgets/gimpcontainereditor.[ch] + * app/widgets/gimpdatafactoryview.[ch] + * app/widgets/gimpdialogfactory.[ch] + * app/widgets/gimpdock.c + * app/widgets/gimpdockbook.c + * app/widgets/gimpdocumentview.[ch] + * app/widgets/gimpdrawablelistview.[ch] + * app/widgets/gimppreview.c + * app/display/gimpdisplayshell-callbacks.c + * app/display/gimpdisplayshell.[ch]: pass around GimpItemFactory + pointers instead of "const gchar *" item factory identifiers. + Replaced gtk_window_set_policy() by gtk_window_set_resizable() + and other recommended stuff. + + * app/gui/about-dialog.c + * app/gui/dialogs-constructors.c + * app/gui/dialogs.c + * app/gui/file-open-dialog.c + * app/gui/file-save-dialog.c + * app/gui/gradient-editor.c + * app/gui/menus.c + * app/gui/offset-dialog.c + * app/gui/splash.c + * app/gui/tips-dialog.c + * app/gui/toolbox.c: lots of + s/gtk_item_factory_from_path/gimp_item_factory_from_path/, + gtk_window_set_policy() replacements, misc fixes. + + * plug-ins/gdyntext/charmap_window.c + * plug-ins/gdyntext/gdyntext_ui.c + * plug-ins/gdyntext/message_window.c + * plug-ins/imagemap/imap_main.c: replaced gtk_window_set_policy(). + +2002-01-25 Michael Natterer + + * plug-ins/common/tga.c + * plug-ins/common/video.c: compile with GTK_DISABLE_DEPRECATED. + 2002-01-24 Sven Neumann * plug-ins/common/tga.c: merged fix for bug #53278 from stable branch. diff --git a/app/dialogs/about-dialog.c b/app/dialogs/about-dialog.c index 84422112cc..5b4c79061f 100644 --- a/app/dialogs/about-dialog.c +++ b/app/dialogs/about-dialog.c @@ -130,8 +130,8 @@ about_dialog_create (void) GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_wmclass (GTK_WINDOW (about_dialog), "about_dialog", "Gimp"); gtk_window_set_title (GTK_WINDOW (about_dialog), _("About The GIMP")); - gtk_window_set_policy (GTK_WINDOW (about_dialog), FALSE, FALSE, FALSE); gtk_window_set_position (GTK_WINDOW (about_dialog), GTK_WIN_POS_CENTER); + gtk_window_set_resizable (GTK_WINDOW (about_dialog), FALSE); gimp_help_connect (about_dialog, gimp_standard_help_func, "dialogs/about.html"); @@ -161,7 +161,7 @@ about_dialog_create (void) gtk_widget_set_events (about_dialog, GDK_BUTTON_PRESS_MASK); - if (!about_dialog_load_logo (about_dialog)) + if (! about_dialog_load_logo (about_dialog)) { gtk_widget_destroy (about_dialog); about_dialog = NULL; diff --git a/app/dialogs/dialogs-constructors.c b/app/dialogs/dialogs-constructors.c index 470748d63d..8414f808ac 100644 --- a/app/dialogs/dialogs-constructors.c +++ b/app/dialogs/dialogs-constructors.c @@ -42,6 +42,7 @@ #include "widgets/gimpdatafactoryview.h" #include "widgets/gimpdialogfactory.h" #include "widgets/gimpimagedock.h" +#include "widgets/gimpitemfactory.h" #include "widgets/gimpdockable.h" #include "widgets/gimpdockbook.h" #include "widgets/gimpdocumentview.h" @@ -386,7 +387,7 @@ dialogs_brush_list_view_new (GimpDialogFactory *factory, TRUE, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Brush List", "Brushes", @@ -407,7 +408,7 @@ dialogs_pattern_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Pattern List", "Patterns", @@ -428,7 +429,7 @@ dialogs_gradient_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Gradient List", "Gradients", @@ -449,7 +450,7 @@ dialogs_palette_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Palette List", "Palettes", @@ -488,7 +489,7 @@ dialogs_buffer_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Buffer List", "Buffers", @@ -532,7 +533,7 @@ dialogs_brush_grid_view_new (GimpDialogFactory *factory, TRUE, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Brush Grid", "Brushes", @@ -553,7 +554,7 @@ dialogs_pattern_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Pattern Grid", "Patterns", @@ -574,7 +575,7 @@ dialogs_gradient_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Gradient Grid", "Gradients", @@ -595,7 +596,7 @@ dialogs_palette_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Palette Grid", "Palettes", @@ -634,7 +635,7 @@ dialogs_buffer_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Buffer Grid", "Buffers", @@ -671,7 +672,7 @@ dialogs_layer_list_view_new (GimpDialogFactory *factory, (GimpConvertDrawableFunc) gimp_layer_new_from_drawable, (GimpNewDrawableFunc) layers_new_layer_query, (GimpEditDrawableFunc) layers_edit_layer_query, - ""); + gimp_item_factory_from_path ("")); dockable = dialogs_dockable_new (view, "Layer List", "Layers", @@ -709,7 +710,7 @@ dialogs_channel_list_view_new (GimpDialogFactory *factory, (GimpConvertDrawableFunc) NULL, (GimpNewDrawableFunc) channels_new_channel_query, (GimpEditDrawableFunc) channels_edit_channel_query, - ""); + gimp_item_factory_from_path ("")); dockable = dialogs_dockable_new (view, "Channel List", "Channels", @@ -789,7 +790,7 @@ dialogs_document_history_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Document History", "History", diff --git a/app/dialogs/dialogs.c b/app/dialogs/dialogs.c index c529c5ae93..c8f8fafbdb 100644 --- a/app/dialogs/dialogs.c +++ b/app/dialogs/dialogs.c @@ -26,6 +26,7 @@ #include "core/gimpcontext.h" #include "widgets/gimpdialogfactory.h" +#include "widgets/gimpitemfactory.h" #include "dialogs.h" #include "dialogs-constructors.h" @@ -100,7 +101,7 @@ dialogs_init (Gimp *gimp) global_dock_factory = gimp_dialog_factory_new ("dock", gimp_get_user_context (gimp), - gtk_item_factory_from_path (""), + gimp_item_factory_from_path (""), dialogs_dock_new); for (i = 0; i < G_N_ELEMENTS (toplevel_entries); i++) diff --git a/app/dialogs/file-open-dialog.c b/app/dialogs/file-open-dialog.c index 47e687444d..7bf388e1e9 100644 --- a/app/dialogs/file-open-dialog.c +++ b/app/dialogs/file-open-dialog.c @@ -38,7 +38,7 @@ #include "libgimpmath/gimpmath.h" #include "libgimpwidgets/gimpwidgets.h" -#include "core/core-types.h" +#include "gui-types.h" #include "base/temp-buf.h" @@ -224,12 +224,12 @@ file_open_dialog_create (Gimp *gimp) "open/dialogs/file_open.html"); { - GtkItemFactory *item_factory; - GtkWidget *frame; - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *option_menu; - GtkWidget *open_options_genbutton; + GimpItemFactory *item_factory; + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *option_menu; + GtkWidget *open_options_genbutton; open_options = gtk_hbox_new (TRUE, 1); @@ -250,9 +250,9 @@ file_open_dialog_create (Gimp *gimp) gtk_box_pack_start (GTK_BOX (hbox), option_menu, FALSE, FALSE, 0); gtk_widget_show (option_menu); - item_factory = gtk_item_factory_from_path (""); + item_factory = gimp_item_factory_from_path (""); gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), - item_factory->widget); + GTK_ITEM_FACTORY (item_factory)->widget); gtk_widget_show (vbox); gtk_widget_show (frame); diff --git a/app/dialogs/file-save-dialog.c b/app/dialogs/file-save-dialog.c index 8612d7c81b..edf3d269d3 100644 --- a/app/dialogs/file-save-dialog.c +++ b/app/dialogs/file-save-dialog.c @@ -250,11 +250,11 @@ file_save_dialog_create (void) "save/dialogs/file_save.html"); { - GtkItemFactory *item_factory; - GtkWidget *frame; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *option_menu; + GimpItemFactory *item_factory; + GtkWidget *frame; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *option_menu; save_options = gtk_hbox_new (TRUE, 1); @@ -275,9 +275,9 @@ file_save_dialog_create (void) gtk_box_pack_start (GTK_BOX (hbox), option_menu, TRUE, TRUE, 0); gtk_widget_show (option_menu); - item_factory = gtk_item_factory_from_path (""); + item_factory = gimp_item_factory_from_path (""); gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), - item_factory->widget); + GTK_ITEM_FACTORY (item_factory)->widget); gtk_widget_show (frame); diff --git a/app/dialogs/offset-dialog.c b/app/dialogs/offset-dialog.c index be18dff9a6..41dc91d8fc 100644 --- a/app/dialogs/offset-dialog.c +++ b/app/dialogs/offset-dialog.c @@ -137,7 +137,7 @@ offset_dialog_create (GimpDrawable *drawable) adjustment = gtk_adjustment_new (1, 1, 1, 1, 10, 1); spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 2); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); - gtk_widget_set_size_request (spinbutton, 75, 0); + gtk_widget_set_size_request (spinbutton, 75, -1); off_d->off_se = gimp_size_entry_new (1, off_d->gimage->unit, "%a", TRUE, TRUE, FALSE, 75, diff --git a/app/dialogs/tips-dialog.c b/app/dialogs/tips-dialog.c index bfb9ce00d1..8f5b88143a 100644 --- a/app/dialogs/tips-dialog.c +++ b/app/dialogs/tips-dialog.c @@ -91,11 +91,11 @@ tips_dialog_create (void) gtk_window_set_wmclass (GTK_WINDOW (tips_dialog), "tip_of_the_day", "Gimp"); gtk_window_set_title (GTK_WINDOW (tips_dialog), _("GIMP Tip of the Day")); gtk_window_set_position (GTK_WINDOW (tips_dialog), GTK_WIN_POS_CENTER); - gtk_window_set_policy (GTK_WINDOW (tips_dialog), FALSE, TRUE, FALSE); + gtk_window_set_resizable (GTK_WINDOW (tips_dialog), TRUE); g_signal_connect (G_OBJECT (tips_dialog), "delete_event", - G_CALLBACK (gtk_widget_destroy), - NULL); + G_CALLBACK (gtk_widget_destroy), + NULL); g_signal_connect (G_OBJECT (tips_dialog), "destroy", G_CALLBACK (tips_dialog_destroy), diff --git a/app/display/gimpdisplayshell-callbacks.c b/app/display/gimpdisplayshell-callbacks.c index 83aaf09427..1af6fd0a49 100644 --- a/app/display/gimpdisplayshell-callbacks.c +++ b/app/display/gimpdisplayshell-callbacks.c @@ -193,6 +193,9 @@ gimp_display_shell_canvas_realize (GtkWidget *canvas, GDK_TOP_LEFT_ARROW, GIMP_TOOL_CURSOR_NONE, GIMP_CURSOR_MODIFIER_NONE); + + /* allow shrinking */ + gtk_widget_set_size_request (GTK_WIDGET (shell), 0, 0); } gboolean @@ -485,7 +488,7 @@ gimp_display_shell_canvas_tool_events (GtkWidget *canvas, case 3: state |= GDK_BUTTON3_MASK; - gimp_item_factory_popup_with_data (shell->ifactory, + gimp_item_factory_popup_with_data (shell->item_factory, gimage, NULL); return_val = TRUE; @@ -1038,12 +1041,16 @@ gimp_display_shell_origin_button_press (GtkWidget *widget, if (! gdisp->gimage->gimp->busy && event->button == 1) { - gint x, y; + GtkItemFactory *factory; + gint x, y; - gimp_display_shell_origin_menu_position (GTK_MENU (shell->ifactory->widget), - &x, &y, widget); + factory = GTK_ITEM_FACTORY (shell->item_factory); - gtk_item_factory_popup_with_data (shell->ifactory, + gimp_display_shell_origin_menu_position (GTK_MENU (factory->widget), + &x, &y, + widget); + + gtk_item_factory_popup_with_data (factory, gdisp->gimage, NULL, x, y, @@ -1089,9 +1096,9 @@ gimp_display_shell_qmask_button_press (GtkWidget *widget, if ((event->type == GDK_BUTTON_PRESS) && (event->button == 3)) { - GtkItemFactory *factory; + GimpItemFactory *factory; - factory = gtk_item_factory_from_path (""); + factory = gimp_item_factory_from_path (""); gimp_item_factory_popup_with_data (factory, shell, NULL); diff --git a/app/display/gimpdisplayshell-draw.c b/app/display/gimpdisplayshell-draw.c index 67a31f510e..852e9d8437 100644 --- a/app/display/gimpdisplayshell-draw.c +++ b/app/display/gimpdisplayshell-draw.c @@ -172,7 +172,7 @@ static void gimp_display_shell_init (GimpDisplayShell *shell) { shell->gdisp = NULL; - shell->ifactory = NULL; + shell->item_factory = NULL; shell->offset_x = 0; shell->offset_y = 0; @@ -239,6 +239,55 @@ gimp_display_shell_init (GimpDisplayShell *shell) shell->cd_list = NULL; shell->cd_ui = NULL; #endif /* DISPLAY_FILTERS */ + + gtk_window_set_wmclass (GTK_WINDOW (shell), "image_window", "Gimp"); + gtk_window_set_resizable (GTK_WINDOW (shell), TRUE); + + gtk_widget_set_events (GTK_WIDGET (shell), (GDK_POINTER_MOTION_MASK | + GDK_POINTER_MOTION_HINT_MASK | + GDK_BUTTON_PRESS_MASK | + GDK_KEY_PRESS_MASK | + GDK_KEY_RELEASE_MASK)); + + /* active display callback */ + g_signal_connect (G_OBJECT (shell), "button_press_event", + G_CALLBACK (gimp_display_shell_events), + shell); + g_signal_connect (G_OBJECT (shell), "key_press_event", + G_CALLBACK (gimp_display_shell_events), + shell); + + /* dnd stuff */ + gtk_drag_dest_set (GTK_WIDGET (shell), + GTK_DEST_DEFAULT_ALL, + display_target_table, + G_N_ELEMENTS (display_target_table), + GDK_ACTION_COPY); + + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER, + gimp_display_shell_drop_drawable, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER_MASK, + gimp_display_shell_drop_drawable, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_CHANNEL, + gimp_display_shell_drop_drawable, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_PATTERN, + gimp_display_shell_drop_pattern, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_BUFFER, + gimp_display_shell_drop_buffer, + shell); + gimp_dnd_color_dest_set (GTK_WIDGET (shell), + gimp_display_shell_drop_color, + shell); + + /* connect the "F1" help key */ + gimp_help_connect (GTK_WIDGET (shell), + gimp_standard_help_func, + "image/image_window.html"); + } static void @@ -385,64 +434,15 @@ gimp_display_shell_new (GimpDisplay *gdisp) /* the toplevel shell */ shell = g_object_new (GIMP_TYPE_DISPLAY_SHELL, NULL); - shell->gdisp = gdisp; - - gtk_window_set_wmclass (GTK_WINDOW (shell), "image_window", "Gimp"); - gtk_window_set_policy (GTK_WINDOW (shell), TRUE, TRUE, TRUE); - gtk_widget_set_events (GTK_WIDGET (shell), (GDK_POINTER_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_KEY_PRESS_MASK | - GDK_KEY_RELEASE_MASK)); - - /* the popup menu */ - shell->ifactory = gtk_item_factory_from_path (""); + shell->gdisp = gdisp; + shell->item_factory = gimp_item_factory_from_path (""); /* The accelerator table for images */ gimp_window_add_accel_group (GTK_WINDOW (shell), - shell->ifactory, + GTK_ITEM_FACTORY (shell->item_factory), gimp_display_shell_get_accel_context, shell); - /* active display callback */ - g_signal_connect (G_OBJECT (shell), "button_press_event", - G_CALLBACK (gimp_display_shell_events), - shell); - g_signal_connect (G_OBJECT (shell), "key_press_event", - G_CALLBACK (gimp_display_shell_events), - shell); - - /* dnd stuff */ - gtk_drag_dest_set (GTK_WIDGET (shell), - GTK_DEST_DEFAULT_ALL, - display_target_table, - G_N_ELEMENTS (display_target_table), - GDK_ACTION_COPY); - - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER, - gimp_display_shell_drop_drawable, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER_MASK, - gimp_display_shell_drop_drawable, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_CHANNEL, - gimp_display_shell_drop_drawable, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_PATTERN, - gimp_display_shell_drop_pattern, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_BUFFER, - gimp_display_shell_drop_buffer, - shell); - gimp_dnd_color_dest_set (GTK_WIDGET (shell), - gimp_display_shell_drop_color, - shell); - - /* connect the "F1" help key */ - gimp_help_connect (GTK_WIDGET (shell), - gimp_standard_help_func, - "image/image_window.html"); - /* GtkTable widgets are not able to shrink a row/column correctly if * widgets are attached with GTK_EXPAND even if those widgets have * other rows/columns in their rowspan/colspan where they could diff --git a/app/display/gimpdisplayshell-draw.h b/app/display/gimpdisplayshell-draw.h index 3f66914eaf..4bfd66a4e6 100644 --- a/app/display/gimpdisplayshell-draw.h +++ b/app/display/gimpdisplayshell-draw.h @@ -52,7 +52,7 @@ struct _GimpDisplayShell GimpDisplay *gdisp; - GtkItemFactory *ifactory; + GimpItemFactory *item_factory; gint offset_x; /* offset of display image into raw image */ gint offset_y; diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index 67a31f510e..852e9d8437 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -172,7 +172,7 @@ static void gimp_display_shell_init (GimpDisplayShell *shell) { shell->gdisp = NULL; - shell->ifactory = NULL; + shell->item_factory = NULL; shell->offset_x = 0; shell->offset_y = 0; @@ -239,6 +239,55 @@ gimp_display_shell_init (GimpDisplayShell *shell) shell->cd_list = NULL; shell->cd_ui = NULL; #endif /* DISPLAY_FILTERS */ + + gtk_window_set_wmclass (GTK_WINDOW (shell), "image_window", "Gimp"); + gtk_window_set_resizable (GTK_WINDOW (shell), TRUE); + + gtk_widget_set_events (GTK_WIDGET (shell), (GDK_POINTER_MOTION_MASK | + GDK_POINTER_MOTION_HINT_MASK | + GDK_BUTTON_PRESS_MASK | + GDK_KEY_PRESS_MASK | + GDK_KEY_RELEASE_MASK)); + + /* active display callback */ + g_signal_connect (G_OBJECT (shell), "button_press_event", + G_CALLBACK (gimp_display_shell_events), + shell); + g_signal_connect (G_OBJECT (shell), "key_press_event", + G_CALLBACK (gimp_display_shell_events), + shell); + + /* dnd stuff */ + gtk_drag_dest_set (GTK_WIDGET (shell), + GTK_DEST_DEFAULT_ALL, + display_target_table, + G_N_ELEMENTS (display_target_table), + GDK_ACTION_COPY); + + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER, + gimp_display_shell_drop_drawable, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER_MASK, + gimp_display_shell_drop_drawable, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_CHANNEL, + gimp_display_shell_drop_drawable, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_PATTERN, + gimp_display_shell_drop_pattern, + shell); + gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_BUFFER, + gimp_display_shell_drop_buffer, + shell); + gimp_dnd_color_dest_set (GTK_WIDGET (shell), + gimp_display_shell_drop_color, + shell); + + /* connect the "F1" help key */ + gimp_help_connect (GTK_WIDGET (shell), + gimp_standard_help_func, + "image/image_window.html"); + } static void @@ -385,64 +434,15 @@ gimp_display_shell_new (GimpDisplay *gdisp) /* the toplevel shell */ shell = g_object_new (GIMP_TYPE_DISPLAY_SHELL, NULL); - shell->gdisp = gdisp; - - gtk_window_set_wmclass (GTK_WINDOW (shell), "image_window", "Gimp"); - gtk_window_set_policy (GTK_WINDOW (shell), TRUE, TRUE, TRUE); - gtk_widget_set_events (GTK_WIDGET (shell), (GDK_POINTER_MOTION_MASK | - GDK_POINTER_MOTION_HINT_MASK | - GDK_BUTTON_PRESS_MASK | - GDK_KEY_PRESS_MASK | - GDK_KEY_RELEASE_MASK)); - - /* the popup menu */ - shell->ifactory = gtk_item_factory_from_path (""); + shell->gdisp = gdisp; + shell->item_factory = gimp_item_factory_from_path (""); /* The accelerator table for images */ gimp_window_add_accel_group (GTK_WINDOW (shell), - shell->ifactory, + GTK_ITEM_FACTORY (shell->item_factory), gimp_display_shell_get_accel_context, shell); - /* active display callback */ - g_signal_connect (G_OBJECT (shell), "button_press_event", - G_CALLBACK (gimp_display_shell_events), - shell); - g_signal_connect (G_OBJECT (shell), "key_press_event", - G_CALLBACK (gimp_display_shell_events), - shell); - - /* dnd stuff */ - gtk_drag_dest_set (GTK_WIDGET (shell), - GTK_DEST_DEFAULT_ALL, - display_target_table, - G_N_ELEMENTS (display_target_table), - GDK_ACTION_COPY); - - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER, - gimp_display_shell_drop_drawable, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_LAYER_MASK, - gimp_display_shell_drop_drawable, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_CHANNEL, - gimp_display_shell_drop_drawable, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_PATTERN, - gimp_display_shell_drop_pattern, - shell); - gimp_dnd_viewable_dest_set (GTK_WIDGET (shell), GIMP_TYPE_BUFFER, - gimp_display_shell_drop_buffer, - shell); - gimp_dnd_color_dest_set (GTK_WIDGET (shell), - gimp_display_shell_drop_color, - shell); - - /* connect the "F1" help key */ - gimp_help_connect (GTK_WIDGET (shell), - gimp_standard_help_func, - "image/image_window.html"); - /* GtkTable widgets are not able to shrink a row/column correctly if * widgets are attached with GTK_EXPAND even if those widgets have * other rows/columns in their rowspan/colspan where they could diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h index 3f66914eaf..4bfd66a4e6 100644 --- a/app/display/gimpdisplayshell.h +++ b/app/display/gimpdisplayshell.h @@ -52,7 +52,7 @@ struct _GimpDisplayShell GimpDisplay *gdisp; - GtkItemFactory *ifactory; + GimpItemFactory *item_factory; gint offset_x; /* offset of display image into raw image */ gint offset_y; diff --git a/app/gui/about-dialog.c b/app/gui/about-dialog.c index 84422112cc..5b4c79061f 100644 --- a/app/gui/about-dialog.c +++ b/app/gui/about-dialog.c @@ -130,8 +130,8 @@ about_dialog_create (void) GDK_WINDOW_TYPE_HINT_DIALOG); gtk_window_set_wmclass (GTK_WINDOW (about_dialog), "about_dialog", "Gimp"); gtk_window_set_title (GTK_WINDOW (about_dialog), _("About The GIMP")); - gtk_window_set_policy (GTK_WINDOW (about_dialog), FALSE, FALSE, FALSE); gtk_window_set_position (GTK_WINDOW (about_dialog), GTK_WIN_POS_CENTER); + gtk_window_set_resizable (GTK_WINDOW (about_dialog), FALSE); gimp_help_connect (about_dialog, gimp_standard_help_func, "dialogs/about.html"); @@ -161,7 +161,7 @@ about_dialog_create (void) gtk_widget_set_events (about_dialog, GDK_BUTTON_PRESS_MASK); - if (!about_dialog_load_logo (about_dialog)) + if (! about_dialog_load_logo (about_dialog)) { gtk_widget_destroy (about_dialog); about_dialog = NULL; diff --git a/app/gui/dialogs-constructors.c b/app/gui/dialogs-constructors.c index 470748d63d..8414f808ac 100644 --- a/app/gui/dialogs-constructors.c +++ b/app/gui/dialogs-constructors.c @@ -42,6 +42,7 @@ #include "widgets/gimpdatafactoryview.h" #include "widgets/gimpdialogfactory.h" #include "widgets/gimpimagedock.h" +#include "widgets/gimpitemfactory.h" #include "widgets/gimpdockable.h" #include "widgets/gimpdockbook.h" #include "widgets/gimpdocumentview.h" @@ -386,7 +387,7 @@ dialogs_brush_list_view_new (GimpDialogFactory *factory, TRUE, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Brush List", "Brushes", @@ -407,7 +408,7 @@ dialogs_pattern_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Pattern List", "Patterns", @@ -428,7 +429,7 @@ dialogs_gradient_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Gradient List", "Gradients", @@ -449,7 +450,7 @@ dialogs_palette_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Palette List", "Palettes", @@ -488,7 +489,7 @@ dialogs_buffer_list_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Buffer List", "Buffers", @@ -532,7 +533,7 @@ dialogs_brush_grid_view_new (GimpDialogFactory *factory, TRUE, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Brush Grid", "Brushes", @@ -553,7 +554,7 @@ dialogs_pattern_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Pattern Grid", "Patterns", @@ -574,7 +575,7 @@ dialogs_gradient_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Gradient Grid", "Gradients", @@ -595,7 +596,7 @@ dialogs_palette_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Palette Grid", "Palettes", @@ -634,7 +635,7 @@ dialogs_buffer_grid_view_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Buffer Grid", "Buffers", @@ -671,7 +672,7 @@ dialogs_layer_list_view_new (GimpDialogFactory *factory, (GimpConvertDrawableFunc) gimp_layer_new_from_drawable, (GimpNewDrawableFunc) layers_new_layer_query, (GimpEditDrawableFunc) layers_edit_layer_query, - ""); + gimp_item_factory_from_path ("")); dockable = dialogs_dockable_new (view, "Layer List", "Layers", @@ -709,7 +710,7 @@ dialogs_channel_list_view_new (GimpDialogFactory *factory, (GimpConvertDrawableFunc) NULL, (GimpNewDrawableFunc) channels_new_channel_query, (GimpEditDrawableFunc) channels_edit_channel_query, - ""); + gimp_item_factory_from_path ("")); dockable = dialogs_dockable_new (view, "Channel List", "Channels", @@ -789,7 +790,7 @@ dialogs_document_history_new (GimpDialogFactory *factory, context, preview_size, 5, 3, - ""); + gimp_item_factory_from_path ("")); return dialogs_dockable_new (view, "Document History", "History", diff --git a/app/gui/dialogs.c b/app/gui/dialogs.c index c529c5ae93..c8f8fafbdb 100644 --- a/app/gui/dialogs.c +++ b/app/gui/dialogs.c @@ -26,6 +26,7 @@ #include "core/gimpcontext.h" #include "widgets/gimpdialogfactory.h" +#include "widgets/gimpitemfactory.h" #include "dialogs.h" #include "dialogs-constructors.h" @@ -100,7 +101,7 @@ dialogs_init (Gimp *gimp) global_dock_factory = gimp_dialog_factory_new ("dock", gimp_get_user_context (gimp), - gtk_item_factory_from_path (""), + gimp_item_factory_from_path (""), dialogs_dock_new); for (i = 0; i < G_N_ELEMENTS (toplevel_entries); i++) diff --git a/app/gui/file-open-dialog.c b/app/gui/file-open-dialog.c index 47e687444d..7bf388e1e9 100644 --- a/app/gui/file-open-dialog.c +++ b/app/gui/file-open-dialog.c @@ -38,7 +38,7 @@ #include "libgimpmath/gimpmath.h" #include "libgimpwidgets/gimpwidgets.h" -#include "core/core-types.h" +#include "gui-types.h" #include "base/temp-buf.h" @@ -224,12 +224,12 @@ file_open_dialog_create (Gimp *gimp) "open/dialogs/file_open.html"); { - GtkItemFactory *item_factory; - GtkWidget *frame; - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *option_menu; - GtkWidget *open_options_genbutton; + GimpItemFactory *item_factory; + GtkWidget *frame; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *option_menu; + GtkWidget *open_options_genbutton; open_options = gtk_hbox_new (TRUE, 1); @@ -250,9 +250,9 @@ file_open_dialog_create (Gimp *gimp) gtk_box_pack_start (GTK_BOX (hbox), option_menu, FALSE, FALSE, 0); gtk_widget_show (option_menu); - item_factory = gtk_item_factory_from_path (""); + item_factory = gimp_item_factory_from_path (""); gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), - item_factory->widget); + GTK_ITEM_FACTORY (item_factory)->widget); gtk_widget_show (vbox); gtk_widget_show (frame); diff --git a/app/gui/file-save-dialog.c b/app/gui/file-save-dialog.c index 8612d7c81b..edf3d269d3 100644 --- a/app/gui/file-save-dialog.c +++ b/app/gui/file-save-dialog.c @@ -250,11 +250,11 @@ file_save_dialog_create (void) "save/dialogs/file_save.html"); { - GtkItemFactory *item_factory; - GtkWidget *frame; - GtkWidget *hbox; - GtkWidget *label; - GtkWidget *option_menu; + GimpItemFactory *item_factory; + GtkWidget *frame; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *option_menu; save_options = gtk_hbox_new (TRUE, 1); @@ -275,9 +275,9 @@ file_save_dialog_create (void) gtk_box_pack_start (GTK_BOX (hbox), option_menu, TRUE, TRUE, 0); gtk_widget_show (option_menu); - item_factory = gtk_item_factory_from_path (""); + item_factory = gimp_item_factory_from_path (""); gtk_option_menu_set_menu (GTK_OPTION_MENU (option_menu), - item_factory->widget); + GTK_ITEM_FACTORY (item_factory)->widget); gtk_widget_show (frame); diff --git a/app/gui/gradient-editor.c b/app/gui/gradient-editor.c index 8c25c57c95..d59ace1976 100644 --- a/app/gui/gradient-editor.c +++ b/app/gui/gradient-editor.c @@ -811,9 +811,9 @@ preview_events (GtkWidget *widget, case 3: { - GtkItemFactory *factory; + GimpItemFactory *factory; - factory = gtk_item_factory_from_path (""); + factory = gimp_item_factory_from_path (""); gimp_item_factory_popup_with_data (factory, editor, NULL); } @@ -1298,9 +1298,9 @@ control_button_press (GradientEditor *editor, case 3: { - GtkItemFactory *factory; + GimpItemFactory *factory; - factory = gtk_item_factory_from_path (""); + factory = gimp_item_factory_from_path (""); gimp_item_factory_popup_with_data (factory, editor, NULL); } diff --git a/app/gui/menus.c b/app/gui/menus.c index 91b0f99f68..aeb072548e 100644 --- a/app/gui/menus.c +++ b/app/gui/menus.c @@ -1794,22 +1794,22 @@ static GimpItemFactoryEntry qmask_entries[] = static gboolean menus_initialized = FALSE; -static GtkItemFactory *toolbox_factory = NULL; -static GtkItemFactory *image_factory = NULL; -static GtkItemFactory *load_factory = NULL; -static GtkItemFactory *save_factory = NULL; -static GtkItemFactory *layers_factory = NULL; -static GtkItemFactory *channels_factory = NULL; -static GtkItemFactory *paths_factory = NULL; -static GtkItemFactory *dialogs_factory = NULL; -static GtkItemFactory *brushes_factory = NULL; -static GtkItemFactory *patterns_factory = NULL; -static GtkItemFactory *gradient_editor_factory = NULL; -static GtkItemFactory *gradients_factory = NULL; -static GtkItemFactory *palettes_factory = NULL; -static GtkItemFactory *buffers_factory = NULL; -static GtkItemFactory *documents_factory = NULL; -static GtkItemFactory *qmask_factory = NULL; +static GimpItemFactory *toolbox_factory = NULL; +static GimpItemFactory *image_factory = NULL; +static GimpItemFactory *load_factory = NULL; +static GimpItemFactory *save_factory = NULL; +static GimpItemFactory *layers_factory = NULL; +static GimpItemFactory *channels_factory = NULL; +static GimpItemFactory *paths_factory = NULL; +static GimpItemFactory *dialogs_factory = NULL; +static GimpItemFactory *brushes_factory = NULL; +static GimpItemFactory *patterns_factory = NULL; +static GimpItemFactory *gradient_editor_factory = NULL; +static GimpItemFactory *gradients_factory = NULL; +static GimpItemFactory *palettes_factory = NULL; +static GimpItemFactory *buffers_factory = NULL; +static GimpItemFactory *documents_factory = NULL; +static GimpItemFactory *qmask_factory = NULL; /* public functions */ @@ -1869,12 +1869,12 @@ menus_init (Gimp *gimp) for (i = 0; i < gimprc.last_opened_size; i++) { - gimp_item_factory_set_visible (toolbox_factory, + gimp_item_factory_set_visible (GTK_ITEM_FACTORY (toolbox_factory), last_opened_entries[i].entry.path, FALSE); } - gimp_item_factory_set_sensitive (toolbox_factory, + gimp_item_factory_set_sensitive (GTK_ITEM_FACTORY (toolbox_factory), "/File/Open Recent/(None)", FALSE); @@ -2017,7 +2017,7 @@ menus_init (Gimp *gimp) /* reorder /Image/Colors */ tool_info = tool_manager_get_info_by_type (gimp, GIMP_TYPE_POSTERIZE_TOOL); - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), tool_info->menu_path); if (menu_item && menu_item->parent) gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, 3); @@ -2040,7 +2040,7 @@ menus_init (Gimp *gimp) { tool_info = tool_manager_get_info_by_type (gimp, color_tools[i]); - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), tool_info->menu_path); if (menu_item && menu_item->parent) { @@ -2212,12 +2212,12 @@ menus_restore (Gimp *gimp) static gchar *reorder_subsubmenus[] = { "/Filters", "/Xtns" }; - GtkItemFactory *item_factory; - GtkWidget *menu_item; - GtkWidget *menu; - GList *list; - gchar *path; - gint i, pos; + GimpItemFactory *item_factory; + GtkWidget *menu_item; + GtkWidget *menu; + GList *list; + gchar *path; + gint i, pos; g_return_if_fail (GIMP_IS_GIMP (gimp)); @@ -2225,7 +2225,7 @@ menus_restore (Gimp *gimp) * separators to the top of the menu */ pos = 1; - menu_item = gtk_item_factory_get_widget (toolbox_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (toolbox_factory), "/Xtns/Module Browser..."); if (menu_item && menu_item->parent && GTK_IS_MENU (menu_item->parent)) { @@ -2251,7 +2251,7 @@ menus_restore (Gimp *gimp) * separators to the top of the menu */ pos = 3; - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), "/Filters/Filter all Layers..."); if (menu_item && menu_item->parent && GTK_IS_MENU (menu_item->parent)) { @@ -2278,7 +2278,8 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (rotate_plugins); i++) { path = g_strconcat ("/Image/Transform/", rotate_plugins[i], NULL); - menu_item = gtk_item_factory_get_widget (image_factory, path); + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), + path); g_free (path); if (menu_item && menu_item->parent) @@ -2292,7 +2293,8 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (rotate_plugins); i++) { path = g_strconcat ("/Layer/Transform/", rotate_plugins[i], NULL); - menu_item = gtk_item_factory_get_widget (image_factory, path); + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), + path); g_free (path); if (menu_item && menu_item->parent) @@ -2306,7 +2308,8 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (image_file_entries); i++) { path = g_strconcat ("/File/", image_file_entries[i], NULL); - menu_item = gtk_item_factory_get_widget (image_factory, path); + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), + path); g_free (path); if (menu_item && menu_item->parent) @@ -2316,8 +2319,9 @@ menus_restore (Gimp *gimp) /* Reorder menus where plugins registered submenus */ for (i = 0; i < G_N_ELEMENTS (reorder_submenus); i++) { - item_factory = gtk_item_factory_from_path (reorder_submenus[i]); - menu = gtk_item_factory_get_widget (item_factory, + item_factory = gimp_item_factory_from_path (reorder_submenus[i]); + + menu = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (item_factory), reorder_submenus[i]); if (menu && GTK_IS_MENU (menu)) @@ -2328,8 +2332,9 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (reorder_subsubmenus); i++) { - item_factory = gtk_item_factory_from_path (reorder_subsubmenus[i]); - menu = gtk_item_factory_get_widget (item_factory, + item_factory = gimp_item_factory_from_path (reorder_subsubmenus[i]); + + menu = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (item_factory), reorder_subsubmenus[i]); if (menu && GTK_IS_MENU (menu)) @@ -2350,7 +2355,7 @@ menus_restore (Gimp *gimp) /* Move all submenus which registered after "/Filters/Toys" * before the separator after "/Filters/Web" */ - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), "/Filters/---INSERT"); if (menu_item && menu_item->parent && GTK_IS_MENU (menu_item->parent)) @@ -2358,7 +2363,7 @@ menus_restore (Gimp *gimp) menu = menu_item->parent; pos = g_list_index (GTK_MENU_SHELL (menu)->children, menu_item); - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), "/Filters/Toys"); if (menu_item && GTK_IS_MENU (menu_item)) @@ -2467,7 +2472,7 @@ menus_last_opened_update_labels (GimpContainer *container, num_documents = gimp_container_num_children (container); - gimp_item_factory_set_visible (toolbox_factory, + gimp_item_factory_set_visible (GTK_ITEM_FACTORY (toolbox_factory), "/File/Open Recent/(None)", num_documents == 0); @@ -2477,7 +2482,8 @@ menus_last_opened_update_labels (GimpContainer *container, path_str = g_strdup_printf ("/File/Open Recent/%02d", i + 1); - widget = gtk_item_factory_get_widget (toolbox_factory, path_str); + widget = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (toolbox_factory), + path_str); g_free (path_str); @@ -2575,7 +2581,7 @@ menus_debug_recurse_menu (GtkWidget *menu, accel = NULL; } - item_factory = gtk_item_factory_from_path (path); + item_factory = gimp_item_factory_from_path (path); help_page = (gchar *) g_object_get_data (G_OBJECT (menu_item), "help_page"); diff --git a/app/gui/offset-dialog.c b/app/gui/offset-dialog.c index be18dff9a6..41dc91d8fc 100644 --- a/app/gui/offset-dialog.c +++ b/app/gui/offset-dialog.c @@ -137,7 +137,7 @@ offset_dialog_create (GimpDrawable *drawable) adjustment = gtk_adjustment_new (1, 1, 1, 1, 10, 1); spinbutton = gtk_spin_button_new (GTK_ADJUSTMENT (adjustment), 1, 2); gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (spinbutton), TRUE); - gtk_widget_set_size_request (spinbutton, 75, 0); + gtk_widget_set_size_request (spinbutton, 75, -1); off_d->off_se = gimp_size_entry_new (1, off_d->gimage->unit, "%a", TRUE, TRUE, FALSE, 75, diff --git a/app/gui/splash.c b/app/gui/splash.c index 0aa9d018aa..5287d711aa 100644 --- a/app/gui/splash.c +++ b/app/gui/splash.c @@ -54,7 +54,7 @@ splash_create (gboolean show_image) gtk_window_set_title (GTK_WINDOW (win_initstatus), _("GIMP Startup")); gtk_window_set_wmclass (GTK_WINDOW (win_initstatus), "gimp_startup", "Gimp"); gtk_window_set_position (GTK_WINDOW (win_initstatus), GTK_WIN_POS_CENTER); - gtk_window_set_policy (GTK_WINDOW (win_initstatus), FALSE, FALSE, FALSE); + gtk_window_set_resizable (GTK_WINDOW (win_initstatus), FALSE); vbox = gtk_vbox_new (FALSE, 4); gtk_container_add (GTK_CONTAINER (win_initstatus), vbox); diff --git a/app/gui/tips-dialog.c b/app/gui/tips-dialog.c index bfb9ce00d1..8f5b88143a 100644 --- a/app/gui/tips-dialog.c +++ b/app/gui/tips-dialog.c @@ -91,11 +91,11 @@ tips_dialog_create (void) gtk_window_set_wmclass (GTK_WINDOW (tips_dialog), "tip_of_the_day", "Gimp"); gtk_window_set_title (GTK_WINDOW (tips_dialog), _("GIMP Tip of the Day")); gtk_window_set_position (GTK_WINDOW (tips_dialog), GTK_WIN_POS_CENTER); - gtk_window_set_policy (GTK_WINDOW (tips_dialog), FALSE, TRUE, FALSE); + gtk_window_set_resizable (GTK_WINDOW (tips_dialog), TRUE); g_signal_connect (G_OBJECT (tips_dialog), "delete_event", - G_CALLBACK (gtk_widget_destroy), - NULL); + G_CALLBACK (gtk_widget_destroy), + NULL); g_signal_connect (G_OBJECT (tips_dialog), "destroy", G_CALLBACK (tips_dialog_destroy), diff --git a/app/gui/toolbox.c b/app/gui/toolbox.c index 6168efb0a9..cda12ef8ad 100644 --- a/app/gui/toolbox.c +++ b/app/gui/toolbox.c @@ -117,12 +117,12 @@ static GtkTargetEntry toolbox_target_table[] = GtkWidget * toolbox_create (Gimp *gimp) { - GimpContext *context; - GtkItemFactory *toolbox_factory; - GtkWidget *window; - GtkWidget *main_vbox; - GtkWidget *wbox; - GList *list; + GimpContext *context; + GimpItemFactory *toolbox_factory; + GtkWidget *window; + GtkWidget *main_vbox; + GtkWidget *wbox; + GList *list; g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); @@ -131,7 +131,7 @@ toolbox_create (Gimp *gimp) window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_wmclass (GTK_WINDOW (window), "toolbox", "Gimp"); gtk_window_set_title (GTK_WINDOW (window), _("The GIMP")); - gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE); + gtk_window_set_resizable (GTK_WINDOW (window), TRUE); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (toolbox_delete), @@ -169,12 +169,14 @@ toolbox_create (Gimp *gimp) gtk_container_add (GTK_CONTAINER (window), main_vbox); gtk_widget_show (main_vbox); - toolbox_factory = gtk_item_factory_from_path (""); - gtk_box_pack_start (GTK_BOX (main_vbox), toolbox_factory->widget, + toolbox_factory = gimp_item_factory_from_path (""); + gtk_box_pack_start (GTK_BOX (main_vbox), + GTK_ITEM_FACTORY (toolbox_factory)->widget, FALSE, FALSE, 0); - gtk_widget_show (toolbox_factory->widget); + gtk_widget_show (GTK_ITEM_FACTORY (toolbox_factory)->widget); - gtk_window_add_accel_group (GTK_WINDOW (window), toolbox_factory->accel_group); + gtk_window_add_accel_group (GTK_WINDOW (window), + GTK_ITEM_FACTORY (toolbox_factory)->accel_group); /* Connect the "F1" help key */ gimp_help_connect (window, diff --git a/app/menus/menus.c b/app/menus/menus.c index 91b0f99f68..aeb072548e 100644 --- a/app/menus/menus.c +++ b/app/menus/menus.c @@ -1794,22 +1794,22 @@ static GimpItemFactoryEntry qmask_entries[] = static gboolean menus_initialized = FALSE; -static GtkItemFactory *toolbox_factory = NULL; -static GtkItemFactory *image_factory = NULL; -static GtkItemFactory *load_factory = NULL; -static GtkItemFactory *save_factory = NULL; -static GtkItemFactory *layers_factory = NULL; -static GtkItemFactory *channels_factory = NULL; -static GtkItemFactory *paths_factory = NULL; -static GtkItemFactory *dialogs_factory = NULL; -static GtkItemFactory *brushes_factory = NULL; -static GtkItemFactory *patterns_factory = NULL; -static GtkItemFactory *gradient_editor_factory = NULL; -static GtkItemFactory *gradients_factory = NULL; -static GtkItemFactory *palettes_factory = NULL; -static GtkItemFactory *buffers_factory = NULL; -static GtkItemFactory *documents_factory = NULL; -static GtkItemFactory *qmask_factory = NULL; +static GimpItemFactory *toolbox_factory = NULL; +static GimpItemFactory *image_factory = NULL; +static GimpItemFactory *load_factory = NULL; +static GimpItemFactory *save_factory = NULL; +static GimpItemFactory *layers_factory = NULL; +static GimpItemFactory *channels_factory = NULL; +static GimpItemFactory *paths_factory = NULL; +static GimpItemFactory *dialogs_factory = NULL; +static GimpItemFactory *brushes_factory = NULL; +static GimpItemFactory *patterns_factory = NULL; +static GimpItemFactory *gradient_editor_factory = NULL; +static GimpItemFactory *gradients_factory = NULL; +static GimpItemFactory *palettes_factory = NULL; +static GimpItemFactory *buffers_factory = NULL; +static GimpItemFactory *documents_factory = NULL; +static GimpItemFactory *qmask_factory = NULL; /* public functions */ @@ -1869,12 +1869,12 @@ menus_init (Gimp *gimp) for (i = 0; i < gimprc.last_opened_size; i++) { - gimp_item_factory_set_visible (toolbox_factory, + gimp_item_factory_set_visible (GTK_ITEM_FACTORY (toolbox_factory), last_opened_entries[i].entry.path, FALSE); } - gimp_item_factory_set_sensitive (toolbox_factory, + gimp_item_factory_set_sensitive (GTK_ITEM_FACTORY (toolbox_factory), "/File/Open Recent/(None)", FALSE); @@ -2017,7 +2017,7 @@ menus_init (Gimp *gimp) /* reorder /Image/Colors */ tool_info = tool_manager_get_info_by_type (gimp, GIMP_TYPE_POSTERIZE_TOOL); - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), tool_info->menu_path); if (menu_item && menu_item->parent) gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, 3); @@ -2040,7 +2040,7 @@ menus_init (Gimp *gimp) { tool_info = tool_manager_get_info_by_type (gimp, color_tools[i]); - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), tool_info->menu_path); if (menu_item && menu_item->parent) { @@ -2212,12 +2212,12 @@ menus_restore (Gimp *gimp) static gchar *reorder_subsubmenus[] = { "/Filters", "/Xtns" }; - GtkItemFactory *item_factory; - GtkWidget *menu_item; - GtkWidget *menu; - GList *list; - gchar *path; - gint i, pos; + GimpItemFactory *item_factory; + GtkWidget *menu_item; + GtkWidget *menu; + GList *list; + gchar *path; + gint i, pos; g_return_if_fail (GIMP_IS_GIMP (gimp)); @@ -2225,7 +2225,7 @@ menus_restore (Gimp *gimp) * separators to the top of the menu */ pos = 1; - menu_item = gtk_item_factory_get_widget (toolbox_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (toolbox_factory), "/Xtns/Module Browser..."); if (menu_item && menu_item->parent && GTK_IS_MENU (menu_item->parent)) { @@ -2251,7 +2251,7 @@ menus_restore (Gimp *gimp) * separators to the top of the menu */ pos = 3; - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), "/Filters/Filter all Layers..."); if (menu_item && menu_item->parent && GTK_IS_MENU (menu_item->parent)) { @@ -2278,7 +2278,8 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (rotate_plugins); i++) { path = g_strconcat ("/Image/Transform/", rotate_plugins[i], NULL); - menu_item = gtk_item_factory_get_widget (image_factory, path); + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), + path); g_free (path); if (menu_item && menu_item->parent) @@ -2292,7 +2293,8 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (rotate_plugins); i++) { path = g_strconcat ("/Layer/Transform/", rotate_plugins[i], NULL); - menu_item = gtk_item_factory_get_widget (image_factory, path); + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), + path); g_free (path); if (menu_item && menu_item->parent) @@ -2306,7 +2308,8 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (image_file_entries); i++) { path = g_strconcat ("/File/", image_file_entries[i], NULL); - menu_item = gtk_item_factory_get_widget (image_factory, path); + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), + path); g_free (path); if (menu_item && menu_item->parent) @@ -2316,8 +2319,9 @@ menus_restore (Gimp *gimp) /* Reorder menus where plugins registered submenus */ for (i = 0; i < G_N_ELEMENTS (reorder_submenus); i++) { - item_factory = gtk_item_factory_from_path (reorder_submenus[i]); - menu = gtk_item_factory_get_widget (item_factory, + item_factory = gimp_item_factory_from_path (reorder_submenus[i]); + + menu = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (item_factory), reorder_submenus[i]); if (menu && GTK_IS_MENU (menu)) @@ -2328,8 +2332,9 @@ menus_restore (Gimp *gimp) for (i = 0; i < G_N_ELEMENTS (reorder_subsubmenus); i++) { - item_factory = gtk_item_factory_from_path (reorder_subsubmenus[i]); - menu = gtk_item_factory_get_widget (item_factory, + item_factory = gimp_item_factory_from_path (reorder_subsubmenus[i]); + + menu = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (item_factory), reorder_subsubmenus[i]); if (menu && GTK_IS_MENU (menu)) @@ -2350,7 +2355,7 @@ menus_restore (Gimp *gimp) /* Move all submenus which registered after "/Filters/Toys" * before the separator after "/Filters/Web" */ - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), "/Filters/---INSERT"); if (menu_item && menu_item->parent && GTK_IS_MENU (menu_item->parent)) @@ -2358,7 +2363,7 @@ menus_restore (Gimp *gimp) menu = menu_item->parent; pos = g_list_index (GTK_MENU_SHELL (menu)->children, menu_item); - menu_item = gtk_item_factory_get_widget (image_factory, + menu_item = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (image_factory), "/Filters/Toys"); if (menu_item && GTK_IS_MENU (menu_item)) @@ -2467,7 +2472,7 @@ menus_last_opened_update_labels (GimpContainer *container, num_documents = gimp_container_num_children (container); - gimp_item_factory_set_visible (toolbox_factory, + gimp_item_factory_set_visible (GTK_ITEM_FACTORY (toolbox_factory), "/File/Open Recent/(None)", num_documents == 0); @@ -2477,7 +2482,8 @@ menus_last_opened_update_labels (GimpContainer *container, path_str = g_strdup_printf ("/File/Open Recent/%02d", i + 1); - widget = gtk_item_factory_get_widget (toolbox_factory, path_str); + widget = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (toolbox_factory), + path_str); g_free (path_str); @@ -2575,7 +2581,7 @@ menus_debug_recurse_menu (GtkWidget *menu, accel = NULL; } - item_factory = gtk_item_factory_from_path (path); + item_factory = gimp_item_factory_from_path (path); help_page = (gchar *) g_object_get_data (G_OBJECT (menu_item), "help_page"); diff --git a/app/widgets/gimpbrushfactoryview.c b/app/widgets/gimpbrushfactoryview.c index e7d40045ae..6d1dc84a35 100644 --- a/app/widgets/gimpbrushfactoryview.c +++ b/app/widgets/gimpbrushfactoryview.c @@ -156,7 +156,7 @@ gimp_brush_factory_view_new (GimpViewType view_type, gint preview_size, gint min_items_x, gint min_items_y, - const gchar *item_factory) + GimpItemFactory *item_factory) { GimpBrushFactoryView *factory_view; GimpContainerEditor *editor; diff --git a/app/widgets/gimpbrushfactoryview.h b/app/widgets/gimpbrushfactoryview.h index 3c60f53bf5..0c2817e408 100644 --- a/app/widgets/gimpbrushfactoryview.h +++ b/app/widgets/gimpbrushfactoryview.h @@ -62,7 +62,7 @@ GtkWidget * gimp_brush_factory_view_new (GimpViewType view_type, gint preview_size, gint min_items_x, gint min_items_y, - const gchar *item_factory); + GimpItemFactory *item_factory); #endif /* __GIMP_BRUSH_FACTORY_VIEW_H__ */ diff --git a/app/widgets/gimpbufferview.c b/app/widgets/gimpbufferview.c index 974b370d1a..99a711a41e 100644 --- a/app/widgets/gimpbufferview.c +++ b/app/widgets/gimpbufferview.c @@ -114,13 +114,13 @@ gimp_buffer_view_init (GimpBufferView *view) } GtkWidget * -gimp_buffer_view_new (GimpViewType view_type, - GimpContainer *container, - GimpContext *context, - gint preview_size, - gint min_items_x, - gint min_items_y, - const gchar *item_factory) +gimp_buffer_view_new (GimpViewType view_type, + GimpContainer *container, + GimpContext *context, + gint preview_size, + gint min_items_x, + gint min_items_y, + GimpItemFactory *item_factory) { GimpBufferView *buffer_view; GimpContainerEditor *editor; diff --git a/app/widgets/gimpbufferview.h b/app/widgets/gimpbufferview.h index 53b38e9100..d55c6be388 100644 --- a/app/widgets/gimpbufferview.h +++ b/app/widgets/gimpbufferview.h @@ -54,13 +54,13 @@ struct _GimpBufferViewClass GType gimp_buffer_view_get_type (void) G_GNUC_CONST; -GtkWidget * gimp_buffer_view_new (GimpViewType view_type, - GimpContainer *container, - GimpContext *context, - gint preview_size, - gint min_items_x, - gint min_items_y, - const gchar *item_factory); +GtkWidget * gimp_buffer_view_new (GimpViewType view_type, + GimpContainer *container, + GimpContext *context, + gint preview_size, + gint min_items_x, + gint min_items_y, + GimpItemFactory *item_factory); #endif /* __GIMP_BUFFER_VIEW_H__ */ diff --git a/app/widgets/gimpcontainereditor.c b/app/widgets/gimpcontainereditor.c index 3ac757eaca..3ecb037beb 100644 --- a/app/widgets/gimpcontainereditor.c +++ b/app/widgets/gimpcontainereditor.c @@ -119,8 +119,11 @@ gimp_container_editor_finalize (GObject *object) editor = GIMP_CONTAINER_EDITOR (object); - g_free (editor->item_factory); - editor->item_factory = NULL; + if (editor->item_factory) + { + g_object_unref (G_OBJECT (editor->item_factory)); + editor->item_factory = NULL; + } G_OBJECT_CLASS (parent_class)->finalize (object); } @@ -134,17 +137,19 @@ gimp_container_editor_construct (GimpContainerEditor *editor, gboolean reorderable, gint min_items_x, gint min_items_y, - const gchar *item_factory) + GimpItemFactory *item_factory) { g_return_val_if_fail (GIMP_IS_CONTAINER_EDITOR (editor), FALSE); g_return_val_if_fail (GIMP_IS_CONTAINER (container), FALSE); g_return_val_if_fail (GIMP_IS_CONTEXT (context), FALSE); + g_return_val_if_fail (GIMP_IS_ITEM_FACTORY (item_factory), FALSE); g_return_val_if_fail (preview_size > 0 && preview_size <= 64, FALSE); g_return_val_if_fail (min_items_x > 0 && min_items_x <= 64, FALSE); g_return_val_if_fail (min_items_y > 0 && min_items_y <= 64, FALSE); - editor->item_factory = g_strdup (item_factory); + editor->item_factory = item_factory; + g_object_ref (G_OBJECT (editor->item_factory)); switch (view_type) { @@ -249,14 +254,9 @@ gimp_container_editor_real_context_item (GimpContainerEditor *editor, { if (editor->item_factory) { - GtkItemFactory *factory; - - factory = gtk_item_factory_from_path (editor->item_factory); - - if (factory) - { - gimp_item_factory_popup_with_data (factory, editor, NULL); - } + gimp_item_factory_popup_with_data (editor->item_factory, + editor, + NULL); } } } diff --git a/app/widgets/gimpcontainereditor.h b/app/widgets/gimpcontainereditor.h index e0cbcc56c6..13cd9f0b73 100644 --- a/app/widgets/gimpcontainereditor.h +++ b/app/widgets/gimpcontainereditor.h @@ -40,8 +40,7 @@ struct _GimpContainerEditor { GtkVBox parent_instance; - gchar *item_factory; - + GimpItemFactory *item_factory; GimpContainerView *view; }; @@ -71,7 +70,7 @@ gboolean gimp_container_editor_construct (GimpContainerEditor *editor, gboolean reorderable, gint min_items_x, gint min_items_y, - const gchar *item_factory); + GimpItemFactory *item_factory); #endif /* __GIMP_CONTAINER_EDITOR_H__ */ diff --git a/app/widgets/gimpdatafactoryview.c b/app/widgets/gimpdatafactoryview.c index a88a8eca39..d6457cce3e 100644 --- a/app/widgets/gimpdatafactoryview.c +++ b/app/widgets/gimpdatafactoryview.c @@ -129,7 +129,7 @@ gimp_data_factory_view_new (GimpViewType view_type, gint preview_size, gint min_items_x, gint min_items_y, - const gchar *item_factory) + GimpItemFactory *item_factory) { GimpDataFactoryView *factory_view; @@ -161,7 +161,7 @@ gimp_data_factory_view_construct (GimpDataFactoryView *factory_view, gint preview_size, gint min_items_x, gint min_items_y, - const gchar *item_factory) + GimpItemFactory *item_factory) { GimpContainerEditor *editor; diff --git a/app/widgets/gimpdatafactoryview.h b/app/widgets/gimpdatafactoryview.h index ebc74deb90..b9d47649c6 100644 --- a/app/widgets/gimpdatafactoryview.h +++ b/app/widgets/gimpdatafactoryview.h @@ -69,7 +69,7 @@ GtkWidget * gimp_data_factory_view_new (GimpViewType view_type, gint preview_size, gint min_items_x, gint min_items_y, - const gchar *item_factory); + GimpItemFactory *item_factory); /* protected */ @@ -82,7 +82,7 @@ gboolean gimp_data_factory_view_construct (GimpDataFactoryView *factory_view, gint preview_size, gint min_items_x, gint min_items_y, - const gchar *item_factory); + GimpItemFactory *item_factory); #endif /* __GIMP_DATA_FACTORY_VIEW_H__ */ diff --git a/app/widgets/gimpdialogfactory.c b/app/widgets/gimpdialogfactory.c index 02ee61ea0b..3c200b3d21 100644 --- a/app/widgets/gimpdialogfactory.c +++ b/app/widgets/gimpdialogfactory.c @@ -40,6 +40,7 @@ #include "gimpdockbook.h" #include "gimpdockable.h" #include "gimpimagedock.h" +#include "gimpitemfactory.h" typedef enum @@ -183,7 +184,7 @@ gimp_dialog_factory_finalize (GObject *object) GimpDialogFactory * gimp_dialog_factory_new (const gchar *name, GimpContext *context, - GtkItemFactory *item_factory, + GimpItemFactory *item_factory, GimpDialogNewFunc new_dock_func) { GimpDialogFactoryClass *factory_class; @@ -191,7 +192,7 @@ gimp_dialog_factory_new (const gchar *name, g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); - g_return_val_if_fail (! item_factory || GTK_IS_ITEM_FACTORY (item_factory), + g_return_val_if_fail (! item_factory || GIMP_IS_ITEM_FACTORY (item_factory), NULL); /* EEK */ diff --git a/app/widgets/gimpdialogfactory.h b/app/widgets/gimpdialogfactory.h index cc0c603ede..1fc2e1b0c3 100644 --- a/app/widgets/gimpdialogfactory.h +++ b/app/widgets/gimpdialogfactory.h @@ -84,7 +84,7 @@ struct _GimpDialogFactory GimpObject parent_instance; GimpContext *context; - GtkItemFactory *item_factory; + GimpItemFactory *item_factory; /*< private >*/ GimpDialogNewFunc new_dock_func; @@ -107,7 +107,7 @@ GType gimp_dialog_factory_get_type (void) G_GNUC_CONST; GimpDialogFactory * gimp_dialog_factory_new (const gchar *name, GimpContext *context, - GtkItemFactory *item_factory, + GimpItemFactory *item_factory, GimpDialogNewFunc new_dock_func); GimpDialogFactory * gimp_dialog_factory_from_name (const gchar *name); diff --git a/app/widgets/gimpdock.c b/app/widgets/gimpdock.c index 9a254c2f14..632a9e16e6 100644 --- a/app/widgets/gimpdock.c +++ b/app/widgets/gimpdock.c @@ -138,7 +138,7 @@ gimp_dock_init (GimpDock *dock) dock->context = NULL; gtk_window_set_wmclass (GTK_WINDOW (dock), "dock", "Gimp"); - gtk_window_set_policy (GTK_WINDOW (dock), FALSE, TRUE, TRUE); + gtk_window_set_resizable (GTK_WINDOW (dock), TRUE); gtk_widget_set_size_request (GTK_WIDGET (dock), GIMP_DOCK_MINIMAL_WIDTH, -1); diff --git a/app/widgets/gimpdockbook.c b/app/widgets/gimpdockbook.c index 2e25f3d334..59902bfec3 100644 --- a/app/widgets/gimpdockbook.c +++ b/app/widgets/gimpdockbook.c @@ -169,7 +169,9 @@ gimp_dockbook_style_set (GtkWidget *widget, "tab_border", &tab_border, NULL); - gtk_notebook_set_tab_border (GTK_NOTEBOOK (widget), tab_border); + g_object_set (G_OBJECT (widget), + "tab_border", tab_border, + NULL); } static gboolean @@ -466,12 +468,13 @@ gimp_dockbook_tab_button_press (GtkWidget *widget, if (bevent->button == 3) { - GtkItemFactory *ifactory; - GtkWidget *add_widget; + GimpItemFactory *item_factory; + GtkWidget *add_widget; - ifactory = GTK_ITEM_FACTORY (dockbook->dock->factory->item_factory); + item_factory = dockbook->dock->factory->item_factory; - add_widget = gtk_item_factory_get_widget (ifactory, "/Select Tab"); + add_widget = gtk_item_factory_get_widget (GTK_ITEM_FACTORY (item_factory), + "/Select Tab"); /* do evil things */ { @@ -480,6 +483,7 @@ gimp_dockbook_tab_button_press (GtkWidget *widget, notebook_menu = GTK_NOTEBOOK (dockbook)->menu; g_object_ref (G_OBJECT (notebook_menu)); + gtk_menu_detach (GTK_MENU (notebook_menu)); GTK_NOTEBOOK (dockbook)->menu = notebook_menu; @@ -494,7 +498,7 @@ gimp_dockbook_tab_button_press (GtkWidget *widget, */ g_object_ref (G_OBJECT (dockbook)); - gimp_item_factory_popup_with_data (ifactory, + gimp_item_factory_popup_with_data (item_factory, dockbook, (GtkDestroyNotify) gimp_dockbook_menu_end); } diff --git a/app/widgets/gimpdocumentview.c b/app/widgets/gimpdocumentview.c index 0aa93b8af0..f264c3769f 100644 --- a/app/widgets/gimpdocumentview.c +++ b/app/widgets/gimpdocumentview.c @@ -121,13 +121,13 @@ gimp_document_view_init (GimpDocumentView *view) } GtkWidget * -gimp_document_view_new (GimpViewType view_type, - GimpContainer *container, - GimpContext *context, - gint preview_size, - gint min_items_x, - gint min_items_y, - const gchar *item_factory) +gimp_document_view_new (GimpViewType view_type, + GimpContainer *container, + GimpContext *context, + gint preview_size, + gint min_items_x, + gint min_items_y, + GimpItemFactory *item_factory) { GimpDocumentView *document_view; GimpContainerEditor *editor; diff --git a/app/widgets/gimpdocumentview.h b/app/widgets/gimpdocumentview.h index a7409d0fa4..c620447f86 100644 --- a/app/widgets/gimpdocumentview.h +++ b/app/widgets/gimpdocumentview.h @@ -53,13 +53,13 @@ struct _GimpDocumentViewClass GType gimp_document_view_get_type (void) G_GNUC_CONST; -GtkWidget * gimp_document_view_new (GimpViewType view_type, - GimpContainer *container, - GimpContext *context, - gint preview_size, - gint min_items_x, - gint min_items_y, - const gchar *item_factory); +GtkWidget * gimp_document_view_new (GimpViewType view_type, + GimpContainer *container, + GimpContext *context, + gint preview_size, + gint min_items_x, + gint min_items_y, + GimpItemFactory *item_factory); #endif /* __GIMP_DOCUMENT_VIEW_H__ */ diff --git a/app/widgets/gimpdrawablelistview.c b/app/widgets/gimpdrawablelistview.c index 41d1d4c2da..37142abef0 100644 --- a/app/widgets/gimpdrawablelistview.c +++ b/app/widgets/gimpdrawablelistview.c @@ -257,7 +257,7 @@ gimp_drawable_list_view_destroy (GtkObject *object) if (view->item_factory) { - g_free (view->item_factory); + g_object_unref (G_OBJECT (view->item_factory)); view->item_factory = NULL; } @@ -280,7 +280,7 @@ gimp_drawable_list_view_new (gint preview_size, GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory) + GimpItemFactory *item_factory) { GimpDrawableListView *list_view; GimpContainerView *view; @@ -298,7 +298,7 @@ gimp_drawable_list_view_new (gint preview_size, /* convert_drawable_func may be NULL */ g_return_val_if_fail (new_drawable_func != NULL, NULL); g_return_val_if_fail (edit_drawable_func != NULL, NULL); - g_return_val_if_fail (item_factory != NULL, NULL); + g_return_val_if_fail (GIMP_IS_ITEM_FACTORY (item_factory), NULL); if (drawable_type == GIMP_TYPE_LAYER) { @@ -331,7 +331,8 @@ gimp_drawable_list_view_new (gint preview_size, list_view->new_drawable_func = new_drawable_func; list_view->edit_drawable_func = edit_drawable_func; - list_view->item_factory = g_strdup (item_factory); + list_view->item_factory = item_factory; + g_object_ref (G_OBJECT (list_view->item_factory)); /* connect "drop to new" manually as it makes a difference whether * it was clicked or dropped @@ -504,18 +505,18 @@ gimp_drawable_list_view_context_item (GimpContainerView *view, GimpViewable *item, gpointer insert_data) { - GtkItemFactory *factory; + GimpDrawableListView *drawable_view; if (GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item) GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item (view, item, insert_data); - factory = gtk_item_factory_from_path (GIMP_DRAWABLE_LIST_VIEW (view)->item_factory); + drawable_view = GIMP_DRAWABLE_LIST_VIEW (view); - if (factory) + if (drawable_view->item_factory) { - gimp_item_factory_popup_with_data (factory, + gimp_item_factory_popup_with_data (drawable_view->item_factory, gimp_drawable_gimage (GIMP_DRAWABLE (item)), NULL); } diff --git a/app/widgets/gimpdrawablelistview.h b/app/widgets/gimpdrawablelistview.h index bee0627896..74cf856bf6 100644 --- a/app/widgets/gimpdrawablelistview.h +++ b/app/widgets/gimpdrawablelistview.h @@ -81,7 +81,7 @@ struct _GimpDrawableListView GimpNewDrawableFunc new_drawable_func; GimpEditDrawableFunc edit_drawable_func; - gchar *item_factory; + GimpItemFactory *item_factory; GtkWidget *new_button; GtkWidget *raise_button; @@ -116,7 +116,7 @@ GtkWidget * gimp_drawable_list_view_new (gint preview_s GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory); + GimpItemFactory *item_facotry); void gimp_drawable_list_view_set_image (GimpDrawableListView *view, GimpImage *gimage); diff --git a/app/widgets/gimpdrawabletreeview.c b/app/widgets/gimpdrawabletreeview.c index 41d1d4c2da..37142abef0 100644 --- a/app/widgets/gimpdrawabletreeview.c +++ b/app/widgets/gimpdrawabletreeview.c @@ -257,7 +257,7 @@ gimp_drawable_list_view_destroy (GtkObject *object) if (view->item_factory) { - g_free (view->item_factory); + g_object_unref (G_OBJECT (view->item_factory)); view->item_factory = NULL; } @@ -280,7 +280,7 @@ gimp_drawable_list_view_new (gint preview_size, GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory) + GimpItemFactory *item_factory) { GimpDrawableListView *list_view; GimpContainerView *view; @@ -298,7 +298,7 @@ gimp_drawable_list_view_new (gint preview_size, /* convert_drawable_func may be NULL */ g_return_val_if_fail (new_drawable_func != NULL, NULL); g_return_val_if_fail (edit_drawable_func != NULL, NULL); - g_return_val_if_fail (item_factory != NULL, NULL); + g_return_val_if_fail (GIMP_IS_ITEM_FACTORY (item_factory), NULL); if (drawable_type == GIMP_TYPE_LAYER) { @@ -331,7 +331,8 @@ gimp_drawable_list_view_new (gint preview_size, list_view->new_drawable_func = new_drawable_func; list_view->edit_drawable_func = edit_drawable_func; - list_view->item_factory = g_strdup (item_factory); + list_view->item_factory = item_factory; + g_object_ref (G_OBJECT (list_view->item_factory)); /* connect "drop to new" manually as it makes a difference whether * it was clicked or dropped @@ -504,18 +505,18 @@ gimp_drawable_list_view_context_item (GimpContainerView *view, GimpViewable *item, gpointer insert_data) { - GtkItemFactory *factory; + GimpDrawableListView *drawable_view; if (GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item) GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item (view, item, insert_data); - factory = gtk_item_factory_from_path (GIMP_DRAWABLE_LIST_VIEW (view)->item_factory); + drawable_view = GIMP_DRAWABLE_LIST_VIEW (view); - if (factory) + if (drawable_view->item_factory) { - gimp_item_factory_popup_with_data (factory, + gimp_item_factory_popup_with_data (drawable_view->item_factory, gimp_drawable_gimage (GIMP_DRAWABLE (item)), NULL); } diff --git a/app/widgets/gimpdrawabletreeview.h b/app/widgets/gimpdrawabletreeview.h index bee0627896..74cf856bf6 100644 --- a/app/widgets/gimpdrawabletreeview.h +++ b/app/widgets/gimpdrawabletreeview.h @@ -81,7 +81,7 @@ struct _GimpDrawableListView GimpNewDrawableFunc new_drawable_func; GimpEditDrawableFunc edit_drawable_func; - gchar *item_factory; + GimpItemFactory *item_factory; GtkWidget *new_button; GtkWidget *raise_button; @@ -116,7 +116,7 @@ GtkWidget * gimp_drawable_list_view_new (gint preview_s GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory); + GimpItemFactory *item_facotry); void gimp_drawable_list_view_set_image (GimpDrawableListView *view, GimpImage *gimage); diff --git a/app/widgets/gimpgradienteditor.c b/app/widgets/gimpgradienteditor.c index 8c25c57c95..d59ace1976 100644 --- a/app/widgets/gimpgradienteditor.c +++ b/app/widgets/gimpgradienteditor.c @@ -811,9 +811,9 @@ preview_events (GtkWidget *widget, case 3: { - GtkItemFactory *factory; + GimpItemFactory *factory; - factory = gtk_item_factory_from_path (""); + factory = gimp_item_factory_from_path (""); gimp_item_factory_popup_with_data (factory, editor, NULL); } @@ -1298,9 +1298,9 @@ control_button_press (GradientEditor *editor, case 3: { - GtkItemFactory *factory; + GimpItemFactory *factory; - factory = gtk_item_factory_from_path (""); + factory = gimp_item_factory_from_path (""); gimp_item_factory_popup_with_data (factory, editor, NULL); } diff --git a/app/widgets/gimpitemfactory.c b/app/widgets/gimpitemfactory.c index 752d31d031..b5ae2a2726 100644 --- a/app/widgets/gimpitemfactory.c +++ b/app/widgets/gimpitemfactory.c @@ -39,7 +39,12 @@ /* local function prototypes */ -static void gimp_item_factory_create_branches (GtkItemFactory *factory, +static void gimp_item_factory_class_init (GimpItemFactoryClass *klass); +static void gimp_item_factory_init (GimpItemFactory *factory); + +static void gimp_item_factory_finalize (GObject *object); + +static void gimp_item_factory_create_branches (GimpItemFactory *factory, GimpItemFactoryEntry *entry); static void gimp_item_factory_item_realize (GtkWidget *widget, gpointer data); @@ -54,176 +59,80 @@ static gchar * gimp_item_factory_translate_func (const gchar *path, #endif +static GtkItemFactoryClass *parent_class = NULL; + + +GType +gimp_item_factory_get_type (void) +{ + static GType factory_type = 0; + + if (! factory_type) + { + static const GTypeInfo factory_info = + { + sizeof (GimpItemFactoryClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gimp_item_factory_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GimpItemFactory), + 0, /* n_preallocs */ + (GInstanceInitFunc) gimp_item_factory_init, + }; + + factory_type = g_type_register_static (GTK_TYPE_ITEM_FACTORY, + "GimpItemFactory", + &factory_info, 0); + } + + return factory_type; +} + +static void +gimp_item_factory_class_init (GimpItemFactoryClass *klass) +{ + GObjectClass *object_class; + + object_class = G_OBJECT_CLASS (klass); + + parent_class = g_type_class_peek_parent (klass); + + object_class->finalize = gimp_item_factory_finalize; + + klass->factories = g_hash_table_new (g_str_hash, g_str_equal); +} + +static void +gimp_item_factory_init (GimpItemFactory *factory) +{ + factory->factory_path = NULL; +} + +static void +gimp_item_factory_finalize (GObject *object) +{ + GimpItemFactory *factory; + + factory = GIMP_ITEM_FACTORY (object); + + if (factory->factory_path) + { + g_hash_table_remove (GIMP_ITEM_FACTORY_GET_CLASS (object)->factories, + factory->factory_path); + + g_free (factory->factory_path); + factory->factory_path = NULL; + } + + G_OBJECT_CLASS (parent_class)->finalize (object); +} + + /* public functions */ -void -gimp_menu_item_create (GimpItemFactoryEntry *entry, - gchar *domain_name, - gpointer callback_data) -{ - GtkItemFactory *item_factory; - gchar *path; - - g_return_if_fail (entry != NULL); - - path = entry->entry.path; - - if (!path) - return; - - item_factory = gtk_item_factory_from_path (path); - - if (!item_factory) - { - g_warning ("%s: Could not find item factory for path \"%s\"", - G_STRLOC, path); - return; - } - - g_object_set_data (G_OBJECT (item_factory), "textdomain", domain_name); - - while (*path != '>') - path++; - path++; - - entry->entry.path = path; - - gimp_item_factory_create_item (item_factory, - entry, - callback_data, 2, - TRUE, FALSE); -} - -void -gimp_menu_item_destroy (gchar *path) -{ - GtkItemFactory *factory; - - g_return_if_fail (path != NULL); - - factory = gtk_item_factory_from_path (path); - - if (factory) - { - gtk_item_factory_delete_item (factory, path); - } - else - { - g_warning ("%s: Could not find item factory for path \"%s\"", - G_STRLOC, path); - } -} - -void -gimp_menu_item_set_active (gchar *path, - gboolean active) -{ - GtkItemFactory *factory; - - g_return_if_fail (path != NULL); - - factory = gtk_item_factory_from_path (path); - - if (factory) - { - gimp_item_factory_set_active (factory, path, active); - } - else if (! strstr (path, "Script-Fu")) - { - g_warning ("%s: Could not find item factory for path \"%s\"", - G_STRLOC, path); - } -} - -void -gimp_menu_item_set_color (gchar *path, - const GimpRGB *color, - gboolean set_label) -{ - GtkItemFactory *factory; - - g_return_if_fail (path != NULL); - g_return_if_fail (color != NULL); - - factory = gtk_item_factory_from_path (path); - - if (factory) - { - gimp_item_factory_set_color (factory, path, color, set_label); - } - else - { - g_warning ("%s: Could not find item factory for path \"%s\"", - G_STRLOC, path); - } -} - -void -gimp_menu_item_set_label (gchar *path, - const gchar *label) -{ - GtkItemFactory *factory; - - g_return_if_fail (path != NULL); - g_return_if_fail (label != NULL); - - factory = gtk_item_factory_from_path (path); - - if (factory) - { - gimp_item_factory_set_label (factory, path, label); - } - else - { - g_warning ("%s: Could not find item factory for path \"%s\"", - G_STRLOC, path); - } -} - -void -gimp_menu_item_set_sensitive (gchar *path, - gboolean sensitive) -{ - GtkItemFactory *factory; - - g_return_if_fail (path != NULL); - - factory = gtk_item_factory_from_path (path); - - if (factory) - { - gimp_item_factory_set_sensitive (factory, path, sensitive); - } - else if (! strstr (path, "Script-Fu")) - { - g_warning ("%s: Could not find item factory for path \"%s\"", - G_STRLOC, path); - } -} - -void -gimp_menu_item_set_visible (gchar *path, - gboolean visible) -{ - GtkItemFactory *factory; - - g_return_if_fail (path != NULL); - - factory = gtk_item_factory_from_path (path); - - if (factory) - { - gimp_item_factory_set_visible (factory, path, visible); - } - else - { - g_warning ("%s: Could not find item factory for path \"%s\"", - G_STRLOC, path); - } -} - - -GtkItemFactory * +GimpItemFactory * gimp_item_factory_new (GType container_type, const gchar *path, const gchar *factory_path, @@ -233,21 +142,47 @@ gimp_item_factory_new (GType container_type, gpointer callback_data, gboolean create_tearoff) { - GtkItemFactory *factory; + GimpItemFactoryClass *factory_class; + GimpItemFactory *factory; - factory = gtk_item_factory_new (container_type, path, NULL); + g_return_val_if_fail (path != NULL, NULL); + g_return_val_if_fail (factory_path != NULL, NULL); - gtk_item_factory_set_translate_func (factory, + factory_class = g_type_class_ref (GIMP_TYPE_ITEM_FACTORY); + + if (g_hash_table_lookup (factory_class->factories, path)) + { + g_warning ("%s: item factory with path \"%s\" already exists", + G_STRLOC, path); + + g_type_class_unref (factory_class); + return NULL; + } + + factory = g_object_new (GIMP_TYPE_ITEM_FACTORY, NULL); + + gtk_item_factory_construct (GTK_ITEM_FACTORY (factory), + container_type, + path, + NULL); + + gtk_item_factory_set_translate_func (GTK_ITEM_FACTORY (factory), gimp_item_factory_translate_func, (gpointer) path, NULL); + /* this is correct! */ + factory->factory_path = g_strdup (path); + factory->update_func = update_func; + + g_hash_table_insert (factory_class->factories, + factory->factory_path, + factory); + + /* this will go away */ g_object_set_data (G_OBJECT (factory), "factory_path", (gpointer) factory_path); - g_object_set_data (G_OBJECT (factory), "gimp-item-factory-update-func", - update_func); - gimp_item_factory_create_items (factory, n_entries, entries, @@ -256,42 +191,41 @@ gimp_item_factory_new (GType container_type, create_tearoff, TRUE); + g_type_class_unref (factory_class); + + return factory; +} + +GimpItemFactory * +gimp_item_factory_from_path (const gchar *path) +{ + GimpItemFactoryClass *factory_class; + GimpItemFactory *factory; + gchar *base_path; + gchar *p; + + g_return_val_if_fail (path != NULL, NULL); + + base_path = g_strdup (path); + + p = strchr (base_path, '>'); + + if (p) + p[1] = '\0'; + + factory_class = g_type_class_ref (GIMP_TYPE_ITEM_FACTORY); + + factory = g_hash_table_lookup (factory_class->factories, base_path); + + g_type_class_unref (factory_class); + + g_free (base_path); + return factory; } void -gimp_item_factory_popup_with_data (GtkItemFactory *item_factory, - gpointer data, - GtkDestroyNotify popdown_func) -{ - GimpItemFactoryUpdateFunc update_func; - gint x, y; - guint button; - guint32 activate_time; - - g_return_if_fail (GTK_IS_ITEM_FACTORY (item_factory)); - - update_func = g_object_get_data (G_OBJECT (item_factory), - "gimp-item-factory-update-func"); - - if (update_func) - (* update_func) (item_factory, data); - - gimp_menu_position (GTK_MENU (item_factory->widget), - &x, &y, - &button, - &activate_time); - - gtk_item_factory_popup_with_data (item_factory, - data, - popdown_func, - x, y, - button, - activate_time); -} - -void -gimp_item_factory_create_item (GtkItemFactory *item_factory, +gimp_item_factory_create_item (GimpItemFactory *item_factory, GimpItemFactoryEntry *entry, gpointer callback_data, guint callback_type, @@ -300,7 +234,7 @@ gimp_item_factory_create_item (GtkItemFactory *item_factory, { GtkWidget *menu_item; - g_return_if_fail (GTK_IS_ITEM_FACTORY (item_factory)); + g_return_if_fail (GIMP_IS_ITEM_FACTORY (item_factory)); g_return_if_fail (entry != NULL); if (! (strstr (entry->entry.path, "tearoff1"))) @@ -327,12 +261,12 @@ gimp_item_factory_create_item (GtkItemFactory *item_factory, entry->entry.callback_action = (guint) quark; } - gtk_item_factory_create_item (item_factory, + gtk_item_factory_create_item (GTK_ITEM_FACTORY (item_factory), (GtkItemFactoryEntry *) entry, callback_data, callback_type); - menu_item = gtk_item_factory_get_item (item_factory, + menu_item = gtk_item_factory_get_item (GTK_ITEM_FACTORY (item_factory), ((GtkItemFactoryEntry *) entry)->path); if (menu_item) @@ -347,7 +281,7 @@ gimp_item_factory_create_item (GtkItemFactory *item_factory, } void -gimp_item_factory_create_items (GtkItemFactory *item_factory, +gimp_item_factory_create_items (GimpItemFactory *item_factory, guint n_entries, GimpItemFactoryEntry *entries, gpointer callback_data, @@ -368,6 +302,33 @@ gimp_item_factory_create_items (GtkItemFactory *item_factory, } } +void +gimp_item_factory_popup_with_data (GimpItemFactory *item_factory, + gpointer data, + GtkDestroyNotify popdown_func) +{ + gint x, y; + guint button; + guint32 activate_time; + + g_return_if_fail (GIMP_IS_ITEM_FACTORY (item_factory)); + + if (item_factory->update_func) + item_factory->update_func (GTK_ITEM_FACTORY (item_factory), data); + + gimp_menu_position (GTK_MENU (GTK_ITEM_FACTORY (item_factory)->widget), + &x, &y, + &button, + &activate_time); + + gtk_item_factory_popup_with_data (GTK_ITEM_FACTORY (item_factory), + data, + popdown_func, + x, y, + button, + activate_time); +} + void gimp_item_factory_set_active (GtkItemFactory *factory, gchar *path, @@ -388,12 +349,17 @@ gimp_item_factory_set_active (GtkItemFactory *factory, } else { + g_warning ("%s: Unable to set \"active\" for menu item " + "of type \"%s\": %s", + G_STRLOC, + g_type_name (G_TYPE_FROM_INSTANCE (widget)), + path); } } else if (! strstr (path, "Script-Fu")) { g_warning ("%s: Unable to set \"active\" for menu item " - "which doesn't exist:\n%s", + "which doesn't exist: %s", G_STRLOC, path); } } @@ -417,7 +383,7 @@ gimp_item_factory_set_color (GtkItemFactory *factory, if (! widget) { g_warning ("%s: Unable to set color of menu item " - "which doesn't exist:\n%s", + "which doesn't exist: %s", G_STRLOC, path); return; } @@ -585,7 +551,7 @@ gimp_item_factory_set_label (GtkItemFactory *factory, else { g_warning ("%s: Unable to set label of menu item " - "which doesn't exist:\n%s", + "which doesn't exist: %s", G_STRLOC, path); } } @@ -609,7 +575,7 @@ gimp_item_factory_set_sensitive (GtkItemFactory *factory, else if (! strstr (path, "Script-Fu")) { g_warning ("%s: Unable to set sensitivity of menu item" - "which doesn't exist:\n%s", + "which doesn't exist: %s", G_STRLOC, path); } } @@ -636,11 +602,181 @@ gimp_item_factory_set_visible (GtkItemFactory *factory, else { g_warning ("%s: Unable to set visibility of menu item" - "which doesn't exist:\n%s", + "which doesn't exist: %s", G_STRLOC, path); } } +void +gimp_menu_item_create (GimpItemFactoryEntry *entry, + gchar *domain_name, + gpointer callback_data) +{ + GimpItemFactory *item_factory; + gchar *path; + + g_return_if_fail (entry != NULL); + + path = entry->entry.path; + + if (!path) + return; + + item_factory = gimp_item_factory_from_path (path); + + if (!item_factory) + { + g_warning ("%s: Could not find item factory for path \"%s\"", + G_STRLOC, path); + return; + } + + g_object_set_data (G_OBJECT (item_factory), "textdomain", domain_name); + + while (*path != '>') + path++; + path++; + + entry->entry.path = path; + + gimp_item_factory_create_item (item_factory, + entry, + callback_data, 2, + TRUE, FALSE); +} + +void +gimp_menu_item_destroy (gchar *path) +{ + GimpItemFactory *factory; + + g_return_if_fail (path != NULL); + + factory = gimp_item_factory_from_path (path); + + if (factory) + { + gtk_item_factory_delete_item (GTK_ITEM_FACTORY (factory), path); + } + else + { + g_warning ("%s: Could not find item factory for path \"%s\"", + G_STRLOC, path); + } +} + +void +gimp_menu_item_set_active (gchar *path, + gboolean active) +{ + GimpItemFactory *factory; + + g_return_if_fail (path != NULL); + + factory = gimp_item_factory_from_path (path); + + if (factory) + { + gimp_item_factory_set_active (GTK_ITEM_FACTORY (factory), path, + active); + } + else if (! strstr (path, "Script-Fu")) + { + g_warning ("%s: Could not find item factory for path \"%s\"", + G_STRLOC, path); + } +} + +void +gimp_menu_item_set_color (gchar *path, + const GimpRGB *color, + gboolean set_label) +{ + GimpItemFactory *factory; + + g_return_if_fail (path != NULL); + g_return_if_fail (color != NULL); + + factory = gimp_item_factory_from_path (path); + + if (factory) + { + gimp_item_factory_set_color (GTK_ITEM_FACTORY (factory), path, + color, set_label); + } + else + { + g_warning ("%s: Could not find item factory for path \"%s\"", + G_STRLOC, path); + } +} + +void +gimp_menu_item_set_label (gchar *path, + const gchar *label) +{ + GimpItemFactory *factory; + + g_return_if_fail (path != NULL); + g_return_if_fail (label != NULL); + + factory = gimp_item_factory_from_path (path); + + if (factory) + { + gimp_item_factory_set_label (GTK_ITEM_FACTORY (factory), path, + label); + } + else + { + g_warning ("%s: Could not find item factory for path \"%s\"", + G_STRLOC, path); + } +} + +void +gimp_menu_item_set_sensitive (gchar *path, + gboolean sensitive) +{ + GimpItemFactory *factory; + + g_return_if_fail (path != NULL); + + factory = gimp_item_factory_from_path (path); + + if (factory) + { + gimp_item_factory_set_sensitive (GTK_ITEM_FACTORY (factory), path, + sensitive); + } + else if (! strstr (path, "Script-Fu")) + { + g_warning ("%s: Could not find item factory for path \"%s\"", + G_STRLOC, path); + } +} + +void +gimp_menu_item_set_visible (gchar *path, + gboolean visible) +{ + GimpItemFactory *factory; + + g_return_if_fail (path != NULL); + + factory = gimp_item_factory_from_path (path); + + if (factory) + { + gimp_item_factory_set_visible (GTK_ITEM_FACTORY (factory), path, + visible); + } + else + { + g_warning ("%s: Could not find item factory for path \"%s\"", + G_STRLOC, path); + } +} void gimp_item_factory_tearoff_callback (GtkWidget *widget, @@ -697,22 +833,20 @@ gimp_item_factory_tearoff_callback (GtkWidget *widget, /* private functions */ static void -gimp_item_factory_create_branches (GtkItemFactory *factory, +gimp_item_factory_create_branches (GimpItemFactory *factory, GimpItemFactoryEntry *entry) { GString *tearoff_path; gint factory_length; gchar *p; - gchar *path; if (! entry->entry.path) return; tearoff_path = g_string_new (""); - path = entry->entry.path; - p = strchr (path, '/'); - factory_length = p - path; + p = strchr (entry->entry.path, '/'); + factory_length = p - entry->entry.path; /* skip the first slash */ if (p) @@ -720,10 +854,11 @@ gimp_item_factory_create_branches (GtkItemFactory *factory, while (p) { - g_string_assign (tearoff_path, path + factory_length); - g_string_truncate (tearoff_path, p - path - factory_length); + g_string_assign (tearoff_path, entry->entry.path + factory_length); + g_string_truncate (tearoff_path, p - entry->entry.path - factory_length); - if (!gtk_item_factory_get_widget (factory, tearoff_path->str)) + if (! gtk_item_factory_get_widget (GTK_ITEM_FACTORY (factory), + tearoff_path->str)) { GimpItemFactoryEntry branch_entry = { @@ -733,7 +868,7 @@ gimp_item_factory_create_branches (GtkItemFactory *factory, }; branch_entry.entry.path = tearoff_path->str; - g_object_set_data (G_OBJECT (factory), "complete", path); + g_object_set_data (G_OBJECT (factory), "complete", entry->entry.path); gimp_item_factory_create_item (factory, &branch_entry, @@ -744,7 +879,8 @@ gimp_item_factory_create_branches (GtkItemFactory *factory, g_string_append (tearoff_path, "/tearoff1"); - if (! gtk_item_factory_get_widget (factory, tearoff_path->str)) + if (! gtk_item_factory_get_widget (GTK_ITEM_FACTORY (factory), + tearoff_path->str)) { GimpItemFactoryEntry tearoff_entry = { @@ -816,7 +952,7 @@ gimp_item_factory_item_key_press (GtkWidget *widget, { if (help_page && *help_page && - item_factory == gtk_item_factory_from_path ("") && + item_factory == (GtkItemFactory *) gimp_item_factory_from_path ("") && (strcmp (help_page, "help/dialogs/help.html") == 0 || strcmp (help_page, "help/context_help.html") == 0)) { @@ -882,7 +1018,7 @@ gimp_item_factory_translate_func (const gchar *path, gchar *retval; gchar *factory; gchar *translation; - gchar *domain = NULL; + gchar *domain = NULL; gchar *complete = NULL; gchar *p, *t; @@ -894,35 +1030,33 @@ gimp_item_factory_translate_func (const gchar *path, retval = menupath = g_strdup (path); if ((strstr (path, "/tearoff1") != NULL) || - (strstr (path, "/---") != NULL) || - (strstr (path, "/MRU") != NULL)) + (strstr (path, "/---") != NULL) || + (strstr (path, "/MRU") != NULL)) return retval; if (factory) - item_factory = gtk_item_factory_from_path (factory); + item_factory = (GtkItemFactory *) gimp_item_factory_from_path (factory); + if (item_factory) { domain = g_object_get_data (G_OBJECT (item_factory), "textdomain"); complete = g_object_get_data (G_OBJECT (item_factory), "complete"); } - - if (domain) /* use the plugin textdomain */ + + if (domain) /* use the plugin textdomain */ { g_free (menupath); menupath = g_strconcat (factory, path, NULL); if (complete) { - /* - * This is a branch, use the complete path for translation, + /* This is a branch, use the complete path for translation, * then strip off entries from the end until it matches. */ - complete = g_strconcat (factory, complete, NULL); + complete = g_strconcat (factory, complete, NULL); translation = g_strdup (dgettext (domain, complete)); - while (complete && *complete && - translation && *translation && - strcmp (complete, menupath)) + while (*complete && *translation && strcmp (complete, menupath)) { p = strrchr (complete, '/'); t = strrchr (translation, '/'); @@ -956,21 +1090,22 @@ gimp_item_factory_translate_func (const gchar *path, } else { - g_warning ("bad translation for menupath: %s", menupath); + g_warning ("%s: bad translation for menupath: %s", + G_STRLOC, menupath); + retval = menupath + strlen (factory); if (complete) g_free (translation); } } - else /* use the gimp textdomain */ + else /* use the gimp textdomain */ { if (complete) { - /* - * This is a branch, use the complete path for translation, + /* This is a branch, use the complete path for translation, * then strip off entries from the end until it matches. */ - complete = g_strdup (complete); + complete = g_strdup (complete); translation = g_strdup (gettext (complete)); while (*complete && *translation && strcmp (complete, menupath)) @@ -985,6 +1120,7 @@ gimp_item_factory_translate_func (const gchar *path, else break; } + g_free (complete); } else @@ -1001,7 +1137,9 @@ gimp_item_factory_translate_func (const gchar *path, } else { - g_warning ("bad translation for menupath: %s", menupath); + g_warning ("%s: bad translation for menupath: %s", + G_STRLOC, menupath); + if (complete) g_free (translation); } diff --git a/app/widgets/gimpitemfactory.h b/app/widgets/gimpitemfactory.h index 8830af5e0d..0e35432f13 100644 --- a/app/widgets/gimpitemfactory.h +++ b/app/widgets/gimpitemfactory.h @@ -39,72 +39,102 @@ struct _GimpItemFactoryEntry }; -GtkItemFactory * gimp_item_factory_new (GType container_type, - const gchar *path, - const gchar *factory_path, - GimpItemFactoryUpdateFunc update_func, - guint n_entries, - GimpItemFactoryEntry *entries, - gpointer callback_data, - gboolean create_tearoff); - -void gimp_item_factory_popup_with_data (GtkItemFactory *item_factory, - gpointer data, - GtkDestroyNotify popdown_func); - -void gimp_item_factory_create_item (GtkItemFactory *item_factory, - GimpItemFactoryEntry *entry, - gpointer callback_data, - guint callback_type, - gboolean create_tearoff, - gboolean static_entry); -void gimp_item_factory_create_items (GtkItemFactory *item_factory, - guint n_entries, - GimpItemFactoryEntry *entries, - gpointer callback_data, - guint callback_type, - gboolean create_tearoff, - gboolean static_entries); - -void gimp_item_factory_set_active (GtkItemFactory *factory, - gchar *path, - gboolean state); -void gimp_item_factory_set_color (GtkItemFactory *factory, - gchar *path, - const GimpRGB *color, - gboolean set_label); -void gimp_item_factory_set_label (GtkItemFactory *factory, - gchar *path, - const gchar *label); -void gimp_item_factory_set_sensitive (GtkItemFactory *factory, - gchar *path, - gboolean sensitive); -void gimp_item_factory_set_visible (GtkItemFactory *factory, - gchar *path, - gboolean visible); +#define GIMP_TYPE_ITEM_FACTORY (gimp_item_factory_get_type ()) +#define GIMP_ITEM_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_ITEM_FACTORY, GimpItemFactory)) +#define GIMP_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_ITEM_FACTORY, GimpItemFactoryClass)) +#define GIMP_IS_ITEM_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_ITEM_FACTORY)) +#define GIMP_IS_ITEM_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_ITEM_FACTORY)) +#define GIMP_ITEM_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_ITEM_FACTORY, GimpItemFactoryClass)) -void gimp_item_factory_tearoff_callback (GtkWidget *widget, - gpointer data, - guint action); +typedef struct _GimpItemFactoryClass GimpItemFactoryClass; + +struct _GimpItemFactory +{ + GtkItemFactory parent_instance; + + gchar *factory_path; + GimpItemFactoryUpdateFunc update_func; +}; + +struct _GimpItemFactoryClass +{ + GtkItemFactoryClass parent_class; + + GHashTable *factories; +}; -void gimp_menu_item_create (GimpItemFactoryEntry *entry, - gchar *domain_name, - gpointer callback_data); -void gimp_menu_item_destroy (gchar *path); +GType gimp_item_factory_get_type (void) G_GNUC_CONST; -void gimp_menu_item_set_active (gchar *path, - gboolean state); -void gimp_menu_item_set_color (gchar *path, - const GimpRGB *color, - gboolean set_label); -void gimp_menu_item_set_label (gchar *path, - const gchar *label); -void gimp_menu_item_set_sensitive (gchar *path, - gboolean sensitive); -void gimp_menu_item_set_visible (gchar *path, - gboolean visible); +GimpItemFactory * gimp_item_factory_new (GType container_type, + const gchar *path, + const gchar *factory_path, + GimpItemFactoryUpdateFunc update_func, + guint n_entries, + GimpItemFactoryEntry *entries, + gpointer callback_data, + gboolean create_tearoff); + +GimpItemFactory * gimp_item_factory_from_path (const gchar *path); + +void gimp_item_factory_create_item (GimpItemFactory *factory, + GimpItemFactoryEntry *entry, + gpointer callback_data, + guint callback_type, + gboolean create_tearoff, + gboolean static_entry); +void gimp_item_factory_create_items (GimpItemFactory *factory, + guint n_entries, + GimpItemFactoryEntry *entries, + gpointer callback_data, + guint callback_type, + gboolean create_tearoff, + gboolean static_entries); + +void gimp_item_factory_popup_with_data (GimpItemFactory *factory, + gpointer data, + GtkDestroyNotify popdown_func); + +void gimp_item_factory_set_active (GtkItemFactory *factory, + gchar *path, + gboolean state); +void gimp_item_factory_set_color (GtkItemFactory *factory, + gchar *path, + const GimpRGB *color, + gboolean set_label); +void gimp_item_factory_set_label (GtkItemFactory *factory, + gchar *path, + const gchar *label); +void gimp_item_factory_set_sensitive (GtkItemFactory *factory, + gchar *path, + gboolean sensitive); +void gimp_item_factory_set_visible (GtkItemFactory *factory, + gchar *path, + gboolean visible); + + +void gimp_item_factory_tearoff_callback (GtkWidget *widget, + gpointer data, + guint action); + + +void gimp_menu_item_create (GimpItemFactoryEntry *entry, + gchar *domain_name, + gpointer callback_data); +void gimp_menu_item_destroy (gchar *path); + +void gimp_menu_item_set_active (gchar *path, + gboolean state); +void gimp_menu_item_set_color (gchar *path, + const GimpRGB *color, + gboolean set_label); +void gimp_menu_item_set_label (gchar *path, + const gchar *label); +void gimp_menu_item_set_sensitive (gchar *path, + gboolean sensitive); +void gimp_menu_item_set_visible (gchar *path, + gboolean visible); G_END_DECLS diff --git a/app/widgets/gimpitemlistview.c b/app/widgets/gimpitemlistview.c index 41d1d4c2da..37142abef0 100644 --- a/app/widgets/gimpitemlistview.c +++ b/app/widgets/gimpitemlistview.c @@ -257,7 +257,7 @@ gimp_drawable_list_view_destroy (GtkObject *object) if (view->item_factory) { - g_free (view->item_factory); + g_object_unref (G_OBJECT (view->item_factory)); view->item_factory = NULL; } @@ -280,7 +280,7 @@ gimp_drawable_list_view_new (gint preview_size, GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory) + GimpItemFactory *item_factory) { GimpDrawableListView *list_view; GimpContainerView *view; @@ -298,7 +298,7 @@ gimp_drawable_list_view_new (gint preview_size, /* convert_drawable_func may be NULL */ g_return_val_if_fail (new_drawable_func != NULL, NULL); g_return_val_if_fail (edit_drawable_func != NULL, NULL); - g_return_val_if_fail (item_factory != NULL, NULL); + g_return_val_if_fail (GIMP_IS_ITEM_FACTORY (item_factory), NULL); if (drawable_type == GIMP_TYPE_LAYER) { @@ -331,7 +331,8 @@ gimp_drawable_list_view_new (gint preview_size, list_view->new_drawable_func = new_drawable_func; list_view->edit_drawable_func = edit_drawable_func; - list_view->item_factory = g_strdup (item_factory); + list_view->item_factory = item_factory; + g_object_ref (G_OBJECT (list_view->item_factory)); /* connect "drop to new" manually as it makes a difference whether * it was clicked or dropped @@ -504,18 +505,18 @@ gimp_drawable_list_view_context_item (GimpContainerView *view, GimpViewable *item, gpointer insert_data) { - GtkItemFactory *factory; + GimpDrawableListView *drawable_view; if (GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item) GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item (view, item, insert_data); - factory = gtk_item_factory_from_path (GIMP_DRAWABLE_LIST_VIEW (view)->item_factory); + drawable_view = GIMP_DRAWABLE_LIST_VIEW (view); - if (factory) + if (drawable_view->item_factory) { - gimp_item_factory_popup_with_data (factory, + gimp_item_factory_popup_with_data (drawable_view->item_factory, gimp_drawable_gimage (GIMP_DRAWABLE (item)), NULL); } diff --git a/app/widgets/gimpitemlistview.h b/app/widgets/gimpitemlistview.h index bee0627896..74cf856bf6 100644 --- a/app/widgets/gimpitemlistview.h +++ b/app/widgets/gimpitemlistview.h @@ -81,7 +81,7 @@ struct _GimpDrawableListView GimpNewDrawableFunc new_drawable_func; GimpEditDrawableFunc edit_drawable_func; - gchar *item_factory; + GimpItemFactory *item_factory; GtkWidget *new_button; GtkWidget *raise_button; @@ -116,7 +116,7 @@ GtkWidget * gimp_drawable_list_view_new (gint preview_s GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory); + GimpItemFactory *item_facotry); void gimp_drawable_list_view_set_image (GimpDrawableListView *view, GimpImage *gimage); diff --git a/app/widgets/gimpitemtreeview.c b/app/widgets/gimpitemtreeview.c index 41d1d4c2da..37142abef0 100644 --- a/app/widgets/gimpitemtreeview.c +++ b/app/widgets/gimpitemtreeview.c @@ -257,7 +257,7 @@ gimp_drawable_list_view_destroy (GtkObject *object) if (view->item_factory) { - g_free (view->item_factory); + g_object_unref (G_OBJECT (view->item_factory)); view->item_factory = NULL; } @@ -280,7 +280,7 @@ gimp_drawable_list_view_new (gint preview_size, GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory) + GimpItemFactory *item_factory) { GimpDrawableListView *list_view; GimpContainerView *view; @@ -298,7 +298,7 @@ gimp_drawable_list_view_new (gint preview_size, /* convert_drawable_func may be NULL */ g_return_val_if_fail (new_drawable_func != NULL, NULL); g_return_val_if_fail (edit_drawable_func != NULL, NULL); - g_return_val_if_fail (item_factory != NULL, NULL); + g_return_val_if_fail (GIMP_IS_ITEM_FACTORY (item_factory), NULL); if (drawable_type == GIMP_TYPE_LAYER) { @@ -331,7 +331,8 @@ gimp_drawable_list_view_new (gint preview_size, list_view->new_drawable_func = new_drawable_func; list_view->edit_drawable_func = edit_drawable_func; - list_view->item_factory = g_strdup (item_factory); + list_view->item_factory = item_factory; + g_object_ref (G_OBJECT (list_view->item_factory)); /* connect "drop to new" manually as it makes a difference whether * it was clicked or dropped @@ -504,18 +505,18 @@ gimp_drawable_list_view_context_item (GimpContainerView *view, GimpViewable *item, gpointer insert_data) { - GtkItemFactory *factory; + GimpDrawableListView *drawable_view; if (GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item) GIMP_CONTAINER_VIEW_CLASS (parent_class)->context_item (view, item, insert_data); - factory = gtk_item_factory_from_path (GIMP_DRAWABLE_LIST_VIEW (view)->item_factory); + drawable_view = GIMP_DRAWABLE_LIST_VIEW (view); - if (factory) + if (drawable_view->item_factory) { - gimp_item_factory_popup_with_data (factory, + gimp_item_factory_popup_with_data (drawable_view->item_factory, gimp_drawable_gimage (GIMP_DRAWABLE (item)), NULL); } diff --git a/app/widgets/gimpitemtreeview.h b/app/widgets/gimpitemtreeview.h index bee0627896..74cf856bf6 100644 --- a/app/widgets/gimpitemtreeview.h +++ b/app/widgets/gimpitemtreeview.h @@ -81,7 +81,7 @@ struct _GimpDrawableListView GimpNewDrawableFunc new_drawable_func; GimpEditDrawableFunc edit_drawable_func; - gchar *item_factory; + GimpItemFactory *item_factory; GtkWidget *new_button; GtkWidget *raise_button; @@ -116,7 +116,7 @@ GtkWidget * gimp_drawable_list_view_new (gint preview_s GimpConvertDrawableFunc convert_drawable_func, GimpNewDrawableFunc new_drawable_func, GimpEditDrawableFunc edit_drawable_func, - const gchar *item_factory); + GimpItemFactory *item_facotry); void gimp_drawable_list_view_set_image (GimpDrawableListView *view, GimpImage *gimage); diff --git a/app/widgets/gimppreview.c b/app/widgets/gimppreview.c index 55d0d11f63..c2c41612fa 100644 --- a/app/widgets/gimppreview.c +++ b/app/widgets/gimppreview.c @@ -769,7 +769,7 @@ gimp_preview_popup_timeout (GimpPreview *preview) preview->popup_y = 0; window = gtk_window_new (GTK_WINDOW_POPUP); - gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, TRUE); + gtk_window_set_resizable (GTK_WINDOW (window), FALSE); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); diff --git a/app/widgets/gimppreviewrenderer.c b/app/widgets/gimppreviewrenderer.c index 55d0d11f63..c2c41612fa 100644 --- a/app/widgets/gimppreviewrenderer.c +++ b/app/widgets/gimppreviewrenderer.c @@ -769,7 +769,7 @@ gimp_preview_popup_timeout (GimpPreview *preview) preview->popup_y = 0; window = gtk_window_new (GTK_WINDOW_POPUP); - gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, TRUE); + gtk_window_set_resizable (GTK_WINDOW (window), FALSE); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); diff --git a/app/widgets/gimptoolbox.c b/app/widgets/gimptoolbox.c index 6168efb0a9..cda12ef8ad 100644 --- a/app/widgets/gimptoolbox.c +++ b/app/widgets/gimptoolbox.c @@ -117,12 +117,12 @@ static GtkTargetEntry toolbox_target_table[] = GtkWidget * toolbox_create (Gimp *gimp) { - GimpContext *context; - GtkItemFactory *toolbox_factory; - GtkWidget *window; - GtkWidget *main_vbox; - GtkWidget *wbox; - GList *list; + GimpContext *context; + GimpItemFactory *toolbox_factory; + GtkWidget *window; + GtkWidget *main_vbox; + GtkWidget *wbox; + GList *list; g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL); @@ -131,7 +131,7 @@ toolbox_create (Gimp *gimp) window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_wmclass (GTK_WINDOW (window), "toolbox", "Gimp"); gtk_window_set_title (GTK_WINDOW (window), _("The GIMP")); - gtk_window_set_policy (GTK_WINDOW (window), TRUE, TRUE, FALSE); + gtk_window_set_resizable (GTK_WINDOW (window), TRUE); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (toolbox_delete), @@ -169,12 +169,14 @@ toolbox_create (Gimp *gimp) gtk_container_add (GTK_CONTAINER (window), main_vbox); gtk_widget_show (main_vbox); - toolbox_factory = gtk_item_factory_from_path (""); - gtk_box_pack_start (GTK_BOX (main_vbox), toolbox_factory->widget, + toolbox_factory = gimp_item_factory_from_path (""); + gtk_box_pack_start (GTK_BOX (main_vbox), + GTK_ITEM_FACTORY (toolbox_factory)->widget, FALSE, FALSE, 0); - gtk_widget_show (toolbox_factory->widget); + gtk_widget_show (GTK_ITEM_FACTORY (toolbox_factory)->widget); - gtk_window_add_accel_group (GTK_WINDOW (window), toolbox_factory->accel_group); + gtk_window_add_accel_group (GTK_WINDOW (window), + GTK_ITEM_FACTORY (toolbox_factory)->accel_group); /* Connect the "F1" help key */ gimp_help_connect (window, diff --git a/app/widgets/gimpview.c b/app/widgets/gimpview.c index 55d0d11f63..c2c41612fa 100644 --- a/app/widgets/gimpview.c +++ b/app/widgets/gimpview.c @@ -769,7 +769,7 @@ gimp_preview_popup_timeout (GimpPreview *preview) preview->popup_y = 0; window = gtk_window_new (GTK_WINDOW_POPUP); - gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, TRUE); + gtk_window_set_resizable (GTK_WINDOW (window), FALSE); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); diff --git a/app/widgets/gimpviewrenderer.c b/app/widgets/gimpviewrenderer.c index 55d0d11f63..c2c41612fa 100644 --- a/app/widgets/gimpviewrenderer.c +++ b/app/widgets/gimpviewrenderer.c @@ -769,7 +769,7 @@ gimp_preview_popup_timeout (GimpPreview *preview) preview->popup_y = 0; window = gtk_window_new (GTK_WINDOW_POPUP); - gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, TRUE); + gtk_window_set_resizable (GTK_WINDOW (window), FALSE); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_OUT); diff --git a/app/widgets/widgets-types.h b/app/widgets/widgets-types.h index 24a3e3a467..3ac3fd7020 100644 --- a/app/widgets/widgets-types.h +++ b/app/widgets/widgets-types.h @@ -130,6 +130,7 @@ typedef enum typedef struct _GimpDeviceInfo GimpDeviceInfo; typedef struct _GimpDialogFactory GimpDialogFactory; +typedef struct _GimpItemFactory GimpItemFactory; /* widgets */ diff --git a/configure.in b/configure.in index 55f4698a2e..5cc5e088bd 100644 --- a/configure.in +++ b/configure.in @@ -730,7 +730,7 @@ fi AM_CONDITIONAL(STATICLIBS, test x$enable_static = xyes) -CPPFLAGS="${CPPFLAGS} -DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED" +CPPFLAGS="${CPPFLAGS} -DG_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGTK_DISABLE_DEPRECATED" AC_SUBST(GIMP_MAJOR_VERSION) AC_SUBST(GIMP_MINOR_VERSION) diff --git a/libgimpwidgets/gimpdialog.c b/libgimpwidgets/gimpdialog.c index 46430d9278..d78c6a786a 100644 --- a/libgimpwidgets/gimpdialog.c +++ b/libgimpwidgets/gimpdialog.c @@ -232,6 +232,11 @@ gimp_dialog_newv (const gchar *title, gtk_window_set_title (GTK_WINDOW (dialog), title); gtk_window_set_wmclass (GTK_WINDOW (dialog), wmclass_name, "Gimp"); gtk_window_set_position (GTK_WINDOW (dialog), position); + +#ifdef __GNUC__ +#warning FIXME: need a new API for gimp_dialog_new() +#endif + gtk_window_set_policy (GTK_WINDOW (dialog), allow_shrink, allow_grow, auto_shrink); diff --git a/plug-ins/gdyntext/charmap_window.c b/plug-ins/gdyntext/charmap_window.c index 1a8b6b3c17..02d6a32ce7 100644 --- a/plug-ins/gdyntext/charmap_window.c +++ b/plug-ins/gdyntext/charmap_window.c @@ -151,7 +151,8 @@ GtkWidget* charmap_window_new(const gchar *title) cmw = gtk_type_new(charmap_window_get_type()); gtk_window_set_title(GTK_WINDOW(cmw), title); gtk_container_set_border_width(GTK_CONTAINER(cmw), 4); - gtk_window_set_policy(GTK_WINDOW(cmw), TRUE, TRUE, FALSE); + gtk_window_set_resizable(GTK_WINDOW(cmw), TRUE); + gtk_widget_set_size_request(cmw, 0, 0); return GTK_WIDGET(cmw); } diff --git a/plug-ins/gdyntext/gdyntext_ui.c b/plug-ins/gdyntext/gdyntext_ui.c index 5b9c46ddeb..90af184199 100644 --- a/plug-ins/gdyntext/gdyntext_ui.c +++ b/plug-ins/gdyntext/gdyntext_ui.c @@ -179,7 +179,7 @@ create_about_dialog (void) window = gtk_window_new(GTK_WINDOW_DIALOG); gtk_container_set_border_width(GTK_CONTAINER(window), 0); gtk_window_set_title(GTK_WINDOW(window), _("GDynText: About ...")); - gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE); + gtk_window_set_resizable(GTK_WINDOW(window), FALSE); gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER); gimp_dialog_set_icon (GTK_WINDOW (window)); gtk_signal_connect(GTK_OBJECT(window), "destroy", @@ -291,7 +291,7 @@ create_main_window (GdtMainWindow **main_window, title = g_strconcat (_("GDynText"), " ", GDYNTEXT_VERSION, NULL); gtk_window_set_title(GTK_WINDOW(mw->window), title); g_free (title); - gtk_window_set_policy(GTK_WINDOW(mw->window), TRUE, TRUE, FALSE); + gtk_window_set_resizable(GTK_WINDOW(mw->window), TRUE); gtk_widget_set_usize(mw->window, 550, 400); gtk_container_set_border_width(GTK_CONTAINER(mw->window), 0); gtk_signal_connect(GTK_OBJECT(mw->window), "destroy", diff --git a/plug-ins/gdyntext/message_window.c b/plug-ins/gdyntext/message_window.c index eaa41ec98e..9f6e174fa7 100644 --- a/plug-ins/gdyntext/message_window.c +++ b/plug-ins/gdyntext/message_window.c @@ -135,7 +135,8 @@ message_window_new (const gchar *title) gtk_window_set_title (GTK_WINDOW(mw), title); gimp_dialog_set_icon (GTK_WINDOW (mw)); gtk_container_set_border_width (GTK_CONTAINER(mw), 4); - gtk_window_set_policy (GTK_WINDOW(mw), TRUE, TRUE, FALSE); + gtk_window_set_resizable (GTK_WINDOW(mw), TRUE); + gtk_widget_set_size_request (mw, 0, 0); return GTK_WIDGET(mw); } diff --git a/plug-ins/imagemap/imap_main.c b/plug-ins/imagemap/imap_main.c index cfd52485a0..9c1850b98f 100644 --- a/plug-ins/imagemap/imap_main.c +++ b/plug-ins/imagemap/imap_main.c @@ -1336,7 +1336,8 @@ dialog(GimpDrawable *drawable) _shapes = make_object_list(); _dlg = dlg = gtk_window_new(GTK_WINDOW_TOPLEVEL); - gtk_window_set_policy(GTK_WINDOW(dlg), TRUE, TRUE, FALSE); + gtk_window_set_resizable(GTK_WINDOW(dlg), TRUE); + gtk_widget_set_size_request(dlg, 0, 0); gtk_widget_realize(dlg); main_set_title(NULL);