app/display/gimpdisplayshell-appearance.c app/display/gimpdisplayshell.c

2004-12-01  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell-appearance.c
	* app/display/gimpdisplayshell.c
	* app/widgets/gimpdockable.c
	* app/widgets/gimptexteditor.c
	* app/widgets/gimptoolbox.c: check if gimp_ui_manager_ui_get()
	actually returns something. Prevents crashes caused by missing
	ui manager xml files. Fixes bug #159346.
This commit is contained in:
Michael Natterer 2004-12-01 00:13:48 +00:00 committed by Michael Natterer
parent 495963276a
commit 841efd0e2e
6 changed files with 69 additions and 34 deletions

View File

@ -1,3 +1,13 @@
2004-12-01 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell-appearance.c
* app/display/gimpdisplayshell.c
* app/widgets/gimpdockable.c
* app/widgets/gimptexteditor.c
* app/widgets/gimptoolbox.c: check if gimp_ui_manager_ui_get()
actually returns something. Prevents crashes caused by missing
ui manager xml files. Fixes bug #159346.
2004-12-01 Michael Natterer <mitch@gimp.org>
* app/widgets/gimptoolview.c (gimp_tool_view_select_item): no need

View File

@ -101,10 +101,13 @@ gimp_display_shell_set_show_menubar (GimpDisplayShell *shell,
vbox = GTK_CONTAINER (shell->qmask_button->parent->parent);
if (show)
gtk_widget_show (shell->menubar);
else
gtk_widget_hide (shell->menubar);
if (shell->menubar)
{
if (show)
gtk_widget_show (shell->menubar);
else
gtk_widget_hide (shell->menubar);
}
if (options->show_menubar || options->show_statusbar)
gtk_container_set_border_width (vbox, 2);

View File

@ -755,30 +755,34 @@ gimp_display_shell_new (GimpDisplay *gdisp,
shell->menubar = gimp_ui_manager_ui_get (shell->menubar_manager,
"/image-menubar");
gtk_box_pack_start (GTK_BOX (main_vbox), shell->menubar, FALSE, FALSE, 0);
if (shell->options->show_menubar)
gtk_widget_show (shell->menubar);
else
gtk_widget_hide (shell->menubar);
if (shell->menubar)
{
gtk_box_pack_start (GTK_BOX (main_vbox), shell->menubar, FALSE, FALSE, 0);
/* make sure we can activate accels even if the menubar is invisible
* (see http://bugzilla.gnome.org/show_bug.cgi?id=137151)
*/
g_signal_connect (shell->menubar, "can-activate-accel",
G_CALLBACK (gtk_true),
NULL);
if (shell->options->show_menubar)
gtk_widget_show (shell->menubar);
else
gtk_widget_hide (shell->menubar);
/* active display callback */
g_signal_connect (shell->menubar, "button_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (shell->menubar, "button_release_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (shell->menubar, "key_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
/* make sure we can activate accels even if the menubar is invisible
* (see http://bugzilla.gnome.org/show_bug.cgi?id=137151)
*/
g_signal_connect (shell->menubar, "can-activate-accel",
G_CALLBACK (gtk_true),
NULL);
/* active display callback */
g_signal_connect (shell->menubar, "button_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (shell->menubar, "button_release_event",
G_CALLBACK (gimp_display_shell_events),
shell);
g_signal_connect (shell->menubar, "key_press_event",
G_CALLBACK (gimp_display_shell_events),
shell);
}
/* another vbox for everything except the statusbar */
disp_vbox = gtk_vbox_new (FALSE, 1);

View File

@ -939,7 +939,9 @@ gimp_dockable_menu_end (GimpDockable *dockable)
child_menu_widget = gimp_ui_manager_ui_get (dialog_ui_manager,
dialog_ui_path);
gtk_menu_detach (GTK_MENU (child_menu_widget));
if (child_menu_widget)
gtk_menu_detach (GTK_MENU (child_menu_widget));
}
/* release gimp_dockable_show_menu()'s references */
@ -968,6 +970,9 @@ gimp_dockable_show_menu (GimpDockable *dockable)
gtk_ui_manager_get_action (GTK_UI_MANAGER (dockbook_ui_manager),
"/dockable-popup/dockable-menu");
if (! parent_menu_widget || ! parent_menu_action)
return FALSE;
dialog_ui_manager = gimp_dockable_get_menu (dockable,
&dialog_ui_path,
&dialog_popup_data);
@ -985,6 +990,9 @@ gimp_dockable_show_menu (GimpDockable *dockable)
gtk_ui_manager_get_action (GTK_UI_MANAGER (dialog_ui_manager),
dialog_ui_path);
if (! child_menu_widget || ! child_menu_action)
return FALSE;
g_object_get (child_menu_action,
"label", &label,
NULL);

View File

@ -165,9 +165,13 @@ gimp_text_editor_new (const gchar *title,
toolbar = gimp_ui_manager_ui_get (editor->ui_manager,
"/text-editor-toolbar");
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (editor)->vbox), toolbar,
FALSE, FALSE, 0);
gtk_widget_show (toolbar);
if (toolbar)
{
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (editor)->vbox), toolbar,
FALSE, FALSE, 0);
gtk_widget_show (toolbar);
}
scrolled_window = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),

View File

@ -221,8 +221,12 @@ gimp_toolbox_constructor (GType type,
manager = gimp_ui_managers_from_name ("<Image>")->data;
toolbox->menu_bar = gimp_ui_manager_ui_get (manager, "/toolbox-menubar");
gtk_box_pack_start (GTK_BOX (vbox), toolbox->menu_bar, FALSE, FALSE, 0);
gtk_widget_show (toolbox->menu_bar);
if (toolbox->menu_bar)
{
gtk_box_pack_start (GTK_BOX (vbox), toolbox->menu_bar, FALSE, FALSE, 0);
gtk_widget_show (toolbox->menu_bar);
}
gtk_window_add_accel_group (GTK_WINDOW (toolbox),
gtk_ui_manager_get_accel_group (GTK_UI_MANAGER (manager)));
@ -512,15 +516,17 @@ gimp_toolbox_set_geometry (GimpToolbox *toolbox)
if (tool_button)
{
GtkWidget *main_vbox;
GtkRequisition menubar_requisition;
GtkRequisition menubar_requisition = { 0, 0 };
GtkRequisition button_requisition;
gint border_width;
GdkGeometry geometry;
main_vbox = GIMP_DOCK (toolbox)->main_vbox;
gtk_widget_size_request (toolbox->menu_bar, &menubar_requisition);
gtk_widget_size_request (tool_button, &button_requisition);
if (toolbox->menu_bar)
gtk_widget_size_request (toolbox->menu_bar, &menubar_requisition);
gtk_widget_size_request (tool_button, &button_requisition);
border_width = gtk_container_get_border_width (GTK_CONTAINER (main_vbox));