[gimp] Use gimp_display_shell_get_window() instead of gtk_widget_get_toplevel()
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Use gimp_display_shell_get_window() instead of gtk_widget_get_toplevel()
- Date: Tue, 29 Sep 2009 18:41:32 +0000 (UTC)
commit 253b8e2cbe4aadff55dfacc1772f22afa42569df
Author: Michael Natterer <mitch gimp org>
Date: Tue Sep 29 20:32:26 2009 +0200
Use gimp_display_shell_get_window() instead of gtk_widget_get_toplevel()
The new function does the right thing, unlike get_toplevel() which
returns the shell itself if it is not in a window. Check the return
value of get_window() for being non-NULL.
app/actions/actions.c | 40 +++++-----
app/actions/debug-commands.c | 16 ++--
app/actions/view-actions.c | 13 ++-
app/actions/view-commands.c | 46 +++++++----
app/actions/windows-commands.c | 6 +-
app/display/gimpdisplay-foreach.c | 16 +++--
app/display/gimpdisplay-handlers.c | 12 ++--
app/display/gimpdisplay.c | 13 +--
app/display/gimpdisplayshell-appearance.c | 42 ++++------
app/display/gimpdisplayshell-callbacks.c | 11 ++-
app/display/gimpdisplayshell-close.c | 28 ++++---
app/display/gimpdisplayshell-cursor.c | 24 +++---
app/display/gimpdisplayshell-dnd.c | 3 +-
app/display/gimpdisplayshell-handlers.c | 14 ++--
app/display/gimpdisplayshell-progress.c | 12 ++-
app/display/gimpdisplayshell-scale.c | 13 +--
app/display/gimpdisplayshell.c | 12 ++-
app/gui/gui-vtable.c | 7 +-
app/gui/gui.c | 17 ++--
app/tools/gimpmeasuretool.c | 4 +-
app/tools/gimptool.c | 117 +++++++++++++++++------------
21 files changed, 255 insertions(+), 211 deletions(-)
---
diff --git a/app/actions/actions.c b/app/actions/actions.c
index bfc6764..6638ec3 100644
--- a/app/actions/actions.c
+++ b/app/actions/actions.c
@@ -610,28 +610,30 @@ action_message (GimpDisplay *display,
const gchar *format,
...)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
- const gchar *stock_id = NULL;
- va_list args;
+ GimpImageWindow *window;
- toplevel = gtk_widget_get_toplevel (display->shell);
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ window = gimp_display_shell_get_window (GIMP_DISPLAY_SHELL (display->shell));
- if (GIMP_IS_TOOL_OPTIONS (object))
+ if (window)
{
- GimpToolInfo *tool_info = GIMP_TOOL_OPTIONS (object)->tool_info;
+ const gchar *stock_id = NULL;
+ va_list args;
- stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool_info));
- }
- else if (GIMP_IS_VIEWABLE (object))
- {
- stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (object));
- }
+ if (GIMP_IS_TOOL_OPTIONS (object))
+ {
+ GimpToolInfo *tool_info = GIMP_TOOL_OPTIONS (object)->tool_info;
- va_start (args, format);
- gimp_statusbar_push_temp_valist (GIMP_STATUSBAR (statusbar),
- GIMP_MESSAGE_INFO, stock_id,
- format, args);
- va_end (args);
+ stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool_info));
+ }
+ else if (GIMP_IS_VIEWABLE (object))
+ {
+ stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (object));
+ }
+
+ va_start (args, format);
+ gimp_statusbar_push_temp_valist (GIMP_STATUSBAR (window->statusbar),
+ GIMP_MESSAGE_INFO, stock_id,
+ format, args);
+ va_end (args);
+ }
}
diff --git a/app/actions/debug-commands.c b/app/actions/debug-commands.c
index 3a46d18..fbe27aa 100644
--- a/app/actions/debug-commands.c
+++ b/app/actions/debug-commands.c
@@ -187,17 +187,17 @@ void
debug_dump_keyboard_shortcuts_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpDisplay *display = NULL;
- GtkWidget *window = NULL;
- GtkUIManager *manager = NULL;
- GtkAccelGroup *accel_group = NULL;
- GList *group_it = NULL;
- GList *strings = NULL;
+ GimpDisplay *display;
+ GimpImageWindow *window;
+ GtkUIManager *manager;
+ GtkAccelGroup *accel_group;
+ GList *group_it;
+ GList *strings = NULL;
return_if_no_display (display, data);
- window = gtk_widget_get_toplevel (display->shell);
+ window = gimp_display_shell_get_window (GIMP_DISPLAY_SHELL (display->shell));
- manager = GTK_UI_MANAGER (GIMP_IMAGE_WINDOW (window)->menubar_manager);
+ manager = GTK_UI_MANAGER (window->menubar_manager);
accel_group = gtk_ui_manager_get_accel_group (manager);
diff --git a/app/actions/view-actions.c b/app/actions/view-actions.c
index 7f3a925..36f185d 100644
--- a/app/actions/view-actions.c
+++ b/app/actions/view-actions.c
@@ -550,12 +550,14 @@ view_actions_update (GimpActionGroup *group,
if (display)
{
- GtkWidget *window = gtk_widget_get_toplevel (display->shell);
+ GimpImageWindow *window;
- image = display->image;
- shell = GIMP_DISPLAY_SHELL (display->shell);
+ image = display->image;
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
- fullscreen = gimp_image_window_get_fullscreen (GIMP_IMAGE_WINDOW (window));
+ if (window)
+ fullscreen = gimp_image_window_get_fullscreen (window);
options = (image ?
(fullscreen ? shell->fullscreen_options : shell->options) :
@@ -679,7 +681,8 @@ view_actions_update (GimpActionGroup *group,
window = gtk_widget_get_toplevel (GTK_WIDGET (shell));
/* see view_actions_setup() */
- window_actions_update (group, window);
+ if (GTK_IS_WINDOW (window))
+ window_actions_update (group, window);
}
#undef SET_ACTIVE
diff --git a/app/actions/view-commands.c b/app/actions/view-commands.c
index 0d1410d..5cb84a0 100644
--- a/app/actions/view-commands.c
+++ b/app/actions/view-commands.c
@@ -260,12 +260,13 @@ view_dot_for_dot_cmd_callback (GtkAction *action,
if (active != shell->dot_for_dot)
{
- GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
gimp_display_shell_scale_set_dot_for_dot (shell, active);
- SET_ACTIVE (GIMP_IMAGE_WINDOW (window)->menubar_manager,
- "view-dot-for-dot", shell->dot_for_dot);
+ if (window)
+ SET_ACTIVE (window->menubar_manager,
+ "view-dot-for-dot", shell->dot_for_dot);
if (IS_ACTIVE_DISPLAY (display))
SET_ACTIVE (shell->popup_manager, "view-dot-for-dot",
@@ -576,17 +577,19 @@ view_padding_color_cmd_callback (GtkAction *action,
gpointer data)
{
GimpDisplay *display;
- GtkWidget *window;
+ GimpImageWindow *window;
GimpDisplayShell *shell;
GimpDisplayOptions *options;
gboolean fullscreen;
return_if_no_display (display, data);
- window = gtk_widget_get_toplevel (display->shell);
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
- shell = GIMP_DISPLAY_SHELL (display->shell);
-
- fullscreen = gimp_image_window_get_fullscreen (GIMP_IMAGE_WINDOW (window));
+ if (window)
+ fullscreen = gimp_image_window_get_fullscreen (window);
+ else
+ fullscreen = FALSE;
if (fullscreen)
options = shell->fullscreen_options;
@@ -678,16 +681,22 @@ void
view_fullscreen_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpDisplay *display;
- GtkWidget *window;
- gboolean active;
+ GimpDisplay *display;
+ GimpDisplayShell *shell;
+ GimpImageWindow *window;
return_if_no_display (display, data);
- window = gtk_widget_get_toplevel (display->shell);
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
- active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
+ if (window)
+ {
+ gboolean active;
+
+ active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
- gimp_image_window_set_fullscreen (GIMP_IMAGE_WINDOW (window), active);
+ gimp_image_window_set_fullscreen (window, active);
+ }
}
void
@@ -736,13 +745,16 @@ view_padding_color_dialog_update (GimpColorDialog *dialog,
GimpColorDialogState state,
GimpDisplayShell *shell)
{
- GtkWidget *window;
+ GimpImageWindow *window;
GimpDisplayOptions *options;
gboolean fullscreen;
- window = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ window = gimp_display_shell_get_window (shell);
- fullscreen = gimp_image_window_get_fullscreen (GIMP_IMAGE_WINDOW (window));
+ if (window)
+ fullscreen = gimp_image_window_get_fullscreen (window);
+ else
+ fullscreen = FALSE;
if (fullscreen)
options = shell->fullscreen_options;
diff --git a/app/actions/windows-commands.c b/app/actions/windows-commands.c
index f73c65c..2f6630c 100644
--- a/app/actions/windows-commands.c
+++ b/app/actions/windows-commands.c
@@ -70,9 +70,11 @@ void
windows_show_display_cmd_callback (GtkAction *action,
gpointer data)
{
- GimpDisplay *display = g_object_get_data (G_OBJECT (action), "display");
+ GimpDisplay *display = g_object_get_data (G_OBJECT (action), "display");
+ GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
- gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (display->shell)));
+ if (GTK_IS_WINDOW (toplevel))
+ gtk_window_present (GTK_WINDOW (toplevel));
}
void
diff --git a/app/display/gimpdisplay-foreach.c b/app/display/gimpdisplay-foreach.c
index 661f6b1..ecdb630 100644
--- a/app/display/gimpdisplay-foreach.c
+++ b/app/display/gimpdisplay-foreach.c
@@ -246,14 +246,18 @@ gimp_displays_get_num_visible (Gimp *gimp)
if (GTK_WIDGET_DRAWABLE (display->shell))
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
- GdkWindow *window = gtk_widget_get_window (toplevel);
- GdkWindowState state = gdk_window_get_state (window);
+ GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
- if ((state & (GDK_WINDOW_STATE_WITHDRAWN |
- GDK_WINDOW_STATE_ICONIFIED)) == 0)
+ if (GTK_IS_WINDOW (toplevel))
{
- visible++;
+ GdkWindow *window = gtk_widget_get_window (toplevel);
+ GdkWindowState state = gdk_window_get_state (window);
+
+ if ((state & (GDK_WINDOW_STATE_WITHDRAWN |
+ GDK_WINDOW_STATE_ICONIFIED)) == 0)
+ {
+ visible++;
+ }
}
}
}
diff --git a/app/display/gimpdisplay-handlers.c b/app/display/gimpdisplay-handlers.c
index 8b3237d..da8e35e 100644
--- a/app/display/gimpdisplay-handlers.c
+++ b/app/display/gimpdisplay-handlers.c
@@ -163,10 +163,10 @@ gimp_display_saved_handler (GimpImage *image,
const gchar *uri,
GimpDisplay *display)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (display->shell);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- if (gimp_image_window_get_active_shell (window)->display == display)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
gchar *filename = file_utils_uri_display_name (uri);
@@ -183,10 +183,10 @@ gimp_display_exported_handler (GimpImage *image,
const gchar *uri,
GimpDisplay *display)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (display->shell);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- if (gimp_image_window_get_active_shell (window)->display == display)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
gchar *filename = file_utils_uri_display_name (uri);
diff --git a/app/display/gimpdisplay.c b/app/display/gimpdisplay.c
index fedde2d..d8c92c7 100644
--- a/app/display/gimpdisplay.c
+++ b/app/display/gimpdisplay.c
@@ -437,11 +437,8 @@ gimp_display_delete (GimpDisplay *display)
if (display->shell)
{
- GtkWidget *shell = display->shell;
- GtkWidget *toplevel = gtk_widget_get_toplevel (shell);
-#if 0
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
-#endif
+ GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (display->shell);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
/* set display->shell to NULL *before* destroying the shell.
* all callbacks in gimpdisplayshell-callbacks.c will check
@@ -451,14 +448,14 @@ gimp_display_delete (GimpDisplay *display)
/* FIXME image window: enable this code for multiple shells */
#if 0
- if (gimp_image_window_get_n_displays (window) > 1)
+ if (window && gimp_image_window_get_n_displays (window) > 1)
{
gimp_image_window_remove_display (window, display);
}
- else
+ else if (window)
#endif
{
- gtk_widget_destroy (toplevel);
+ gtk_widget_destroy (GTK_WIDGET (window));
}
}
diff --git a/app/display/gimpdisplayshell-appearance.c b/app/display/gimpdisplayshell-appearance.c
index a0e553e..b3b349e 100644
--- a/app/display/gimpdisplayshell-appearance.c
+++ b/app/display/gimpdisplayshell-appearance.c
@@ -65,17 +65,16 @@ void
gimp_display_shell_appearance_update (GimpDisplayShell *shell)
{
GimpDisplayOptions *options;
- GtkWidget *toplevel;
GimpImageWindow *window;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = appearance_get_options (shell);
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- window = GIMP_IMAGE_WINDOW (toplevel);
+ options = appearance_get_options (shell);
+ window = gimp_display_shell_get_window (shell);
- appearance_set_action_active (shell, "view-fullscreen",
- gimp_image_window_get_fullscreen (window));
+ if (window)
+ appearance_set_action_active (shell, "view-fullscreen",
+ gimp_image_window_get_fullscreen (window));
gimp_display_shell_set_show_menubar (shell,
options->show_menubar);
@@ -106,18 +105,16 @@ gimp_display_shell_set_show_menubar (GimpDisplayShell *shell,
gboolean show)
{
GimpDisplayOptions *options;
- GtkWidget *toplevel;
GimpImageWindow *window;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = appearance_get_options (shell);
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- window = GIMP_IMAGE_WINDOW (toplevel);
+ options = appearance_get_options (shell);
+ window = gimp_display_shell_get_window (shell);
g_object_set (options, "show-menubar", show, NULL);
- if (gimp_image_window_get_active_shell (window) == shell &&
+ if (window && gimp_image_window_get_active_shell (window) == shell &&
window->menubar)
{
if (show)
@@ -142,18 +139,16 @@ gimp_display_shell_set_show_statusbar (GimpDisplayShell *shell,
gboolean show)
{
GimpDisplayOptions *options;
- GtkWidget *toplevel;
GimpImageWindow *window;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- options = appearance_get_options (shell);
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- window = GIMP_IMAGE_WINDOW (toplevel);
+ options = appearance_get_options (shell);
+ window = gimp_display_shell_get_window (shell);
g_object_set (options, "show-statusbar", show, NULL);
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
gimp_statusbar_set_visible (GIMP_STATUSBAR (window->statusbar), show);
}
@@ -592,10 +587,9 @@ appearance_get_options (const GimpDisplayShell *shell)
{
if (shell->display->image)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- if (gimp_image_window_get_fullscreen (window))
+ if (window && gimp_image_window_get_fullscreen (window))
return shell->fullscreen_options;
else
return shell->options;
@@ -609,11 +603,10 @@ appearance_set_action_active (GimpDisplayShell *shell,
const gchar *action,
gboolean active)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
GimpContext *context;
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
GimpActionGroup *action_group;
@@ -643,11 +636,10 @@ appearance_set_action_color (GimpDisplayShell *shell,
const gchar *action,
const GimpRGB *color)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
GimpContext *context;
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
GimpActionGroup *action_group;
diff --git a/app/display/gimpdisplayshell-callbacks.c b/app/display/gimpdisplayshell-callbacks.c
index 9e4c2a4..7672940 100644
--- a/app/display/gimpdisplayshell-callbacks.c
+++ b/app/display/gimpdisplayshell-callbacks.c
@@ -1833,12 +1833,13 @@ gimp_display_shell_quick_mask_button_press (GtkWidget *widget,
if ((bevent->type == GDK_BUTTON_PRESS) && (bevent->button == 3))
{
- GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- gimp_ui_manager_ui_popup (GIMP_IMAGE_WINDOW (window)->menubar_manager,
- "/quick-mask-popup",
- GTK_WIDGET (shell),
- NULL, NULL, NULL, NULL);
+ if (window)
+ gimp_ui_manager_ui_popup (window->menubar_manager,
+ "/quick-mask-popup",
+ GTK_WIDGET (shell),
+ NULL, NULL, NULL, NULL);
return TRUE;
}
diff --git a/app/display/gimpdisplayshell-close.c b/app/display/gimpdisplayshell-close.c
index 927b909..09687a7 100644
--- a/app/display/gimpdisplayshell-close.c
+++ b/app/display/gimpdisplayshell-close.c
@@ -111,13 +111,16 @@ gimp_display_shell_close (GimpDisplayShell *shell,
}
else
{
- GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- /* Activate the action instead of simply calling gimp_exit(), so
- * the quit action's sensitivity is taken into account.
- */
- gimp_ui_manager_activate_action (GIMP_IMAGE_WINDOW (window)->menubar_manager,
- "file", "file-quit");
+ if (window)
+ {
+ /* Activate the action instead of simply calling gimp_exit(), so
+ * the quit action's sensitivity is taken into account.
+ */
+ gimp_ui_manager_activate_action (window->menubar_manager,
+ "file", "file-quit");
+ }
}
}
@@ -214,7 +217,7 @@ gimp_display_shell_close_name_changed (GimpImage *image,
{
GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (box));
- if (window)
+ if (GTK_IS_WINDOW (window))
{
gchar *title = g_strdup_printf (_("Close %s"),
gimp_image_get_display_name (image));
@@ -299,12 +302,15 @@ gimp_display_shell_close_response (GtkWidget *widget,
case RESPONSE_SAVE:
{
- GtkWidget *window = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- /* FIXME image window: set this display active */
+ if (window)
+ {
+ /* FIXME image window: set this display active */
- gimp_ui_manager_activate_action (GIMP_IMAGE_WINDOW (window)->menubar_manager,
- "file", "file-save-and-close");
+ gimp_ui_manager_activate_action (window->menubar_manager,
+ "file", "file-save-and-close");
+ }
}
break;
diff --git a/app/display/gimpdisplayshell-cursor.c b/app/display/gimpdisplayshell-cursor.c
index cffc1a0..e0f739c 100644
--- a/app/display/gimpdisplayshell-cursor.c
+++ b/app/display/gimpdisplayshell-cursor.c
@@ -125,8 +125,7 @@ gimp_display_shell_update_cursor (GimpDisplayShell *shell,
gdouble image_x,
gdouble image_y)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
+ GimpImageWindow *window;
GimpDialogFactory *factory;
GimpSessionInfo *session_info;
GimpImage *image;
@@ -162,11 +161,13 @@ gimp_display_shell_update_cursor (GimpDisplayShell *shell,
/* use the passed image_coords for the statusbar because they are
* possibly snapped...
*/
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ window = gimp_display_shell_get_window (shell);
- gimp_statusbar_update_cursor (GIMP_STATUSBAR (statusbar),
- precision, image_x, image_y);
+ if (window && gimp_image_window_get_active_shell (window))
+ {
+ gimp_statusbar_update_cursor (GIMP_STATUSBAR (window->statusbar),
+ precision, image_x, image_y);
+ }
factory = gimp_dialog_factory_from_name ("dock");
session_info = gimp_dialog_factory_find_session_info (factory,
@@ -197,17 +198,18 @@ gimp_display_shell_update_cursor (GimpDisplayShell *shell,
void
gimp_display_shell_clear_cursor (GimpDisplayShell *shell)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
+ GimpImageWindow *window;
GimpDialogFactory *factory;
GimpSessionInfo *session_info;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ window = gimp_display_shell_get_window (shell);
- gimp_statusbar_clear_cursor (GIMP_STATUSBAR (statusbar));
+ if (window && gimp_image_window_get_active_shell (window) == shell)
+ {
+ gimp_statusbar_clear_cursor (GIMP_STATUSBAR (window->statusbar));
+ }
factory = gimp_dialog_factory_from_name ("dock");
session_info = gimp_dialog_factory_find_session_info (factory,
diff --git a/app/display/gimpdisplayshell-dnd.c b/app/display/gimpdisplayshell-dnd.c
index bc8fdbe..ad7a768 100644
--- a/app/display/gimpdisplayshell-dnd.c
+++ b/app/display/gimpdisplayshell-dnd.c
@@ -184,7 +184,8 @@ gimp_display_shell_dnd_flush (GimpDisplayShell *shell,
{
GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- gtk_window_present (GTK_WINDOW (toplevel));
+ if (GTK_IS_WINDOW (toplevel))
+ gtk_window_present (GTK_WINDOW (toplevel));
gimp_image_flush (image);
diff --git a/app/display/gimpdisplayshell-handlers.c b/app/display/gimpdisplayshell-handlers.c
index a768452..54788f4 100644
--- a/app/display/gimpdisplayshell-handlers.c
+++ b/app/display/gimpdisplayshell-handlers.c
@@ -500,10 +500,9 @@ gimp_display_shell_size_changed_detailed_handler (GimpImage *image,
{
if (shell->display->config->resize_windows_on_resize)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
/* If the window is resized just center the image in it when it
* has change size
@@ -678,16 +677,19 @@ gimp_display_shell_padding_notify_handler (GObject *config,
GimpDisplayShell *shell)
{
GimpDisplayConfig *display_config;
- GtkWidget *window;
+ GimpImageWindow *window;
gboolean fullscreen;
GimpCanvasPaddingMode padding_mode;
GimpRGB padding_color;
display_config = shell->display->config;
- window = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ window = gimp_display_shell_get_window (shell);
- fullscreen = gimp_image_window_get_fullscreen (GIMP_IMAGE_WINDOW (window));
+ if (window)
+ fullscreen = gimp_image_window_get_fullscreen (window);
+ else
+ fullscreen = FALSE;
/* if the user did not set the padding mode for this display explicitely */
if (! shell->fullscreen_options->padding_mode_set)
diff --git a/app/display/gimpdisplayshell-progress.c b/app/display/gimpdisplayshell-progress.c
index 0c0ae5b..8238949 100644
--- a/app/display/gimpdisplayshell-progress.c
+++ b/app/display/gimpdisplayshell-progress.c
@@ -41,11 +41,10 @@
static GimpProgress *
gimp_display_shell_progress_get_real_progress (GimpProgress *progress)
{
- GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (progress);
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (progress);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
return GIMP_PROGRESS (window->statusbar);
else
return NULL;
@@ -129,7 +128,10 @@ gimp_display_shell_progress_get_window (GimpProgress *progress)
{
GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (progress));
- return (guint32) gimp_window_get_native (GTK_WINDOW (toplevel));
+ if (GTK_IS_WINDOW (toplevel))
+ return (guint32) gimp_window_get_native (GTK_WINDOW (toplevel));
+
+ return 0;
}
static gboolean
diff --git a/app/display/gimpdisplayshell-scale.c b/app/display/gimpdisplayshell-scale.c
index 292acae..e53158f 100644
--- a/app/display/gimpdisplayshell-scale.c
+++ b/app/display/gimpdisplayshell-scale.c
@@ -367,11 +367,7 @@ gimp_display_shell_scale (GimpDisplayShell *shell,
{
if (shell->display->config->resize_windows_on_zoom)
{
- GtkWidget *toplevel;
- GimpImageWindow *window;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
/* If the window is resized on zoom, simply do the zoom and
* get things rolling
@@ -379,7 +375,7 @@ gimp_display_shell_scale (GimpDisplayShell *shell,
gimp_zoom_model_zoom (shell->zoom, GIMP_ZOOM_TO, real_new_scale);
gimp_display_shell_scaled (shell);
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
gimp_image_window_shrink_wrap (window, FALSE);
}
@@ -668,10 +664,9 @@ gimp_display_shell_scale_resize (GimpDisplayShell *shell,
if (resize_window)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
gimp_image_window_shrink_wrap (window, grow_only);
}
diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c
index 128cb8e..93f675a 100644
--- a/app/display/gimpdisplayshell.c
+++ b/app/display/gimpdisplayshell.c
@@ -1236,9 +1236,12 @@ gimp_display_shell_fill_idle (GimpDisplayShell *shell)
shell->fill_idle_id = 0;
- gimp_display_shell_scale_shrink_wrap (shell, TRUE);
+ if (GTK_IS_WINDOW (toplevel))
+ {
+ gimp_display_shell_scale_shrink_wrap (shell, TRUE);
- gtk_window_present (GTK_WINDOW (toplevel));
+ gtk_window_present (GTK_WINDOW (toplevel));
+ }
return FALSE;
}
@@ -1610,11 +1613,10 @@ gimp_display_shell_flush (GimpDisplayShell *shell,
}
else
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (toplevel);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
GimpContext *context;
- if (gimp_image_window_get_active_shell (window) == shell)
+ if (window && gimp_image_window_get_active_shell (window) == shell)
{
gimp_ui_manager_update (window->menubar_manager, shell->display);
}
diff --git a/app/gui/gui-vtable.c b/app/gui/gui-vtable.c
index 640df50..7967194 100644
--- a/app/gui/gui-vtable.c
+++ b/app/gui/gui-vtable.c
@@ -359,10 +359,11 @@ gui_display_create (Gimp *gimp,
/* FIXME image window: do this elsewhere */
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
+ GimpImageWindow *window;
- gimp_ui_manager_update (GIMP_IMAGE_WINDOW (toplevel)->menubar_manager,
- display);
+ window = gimp_display_shell_get_window (GIMP_DISPLAY_SHELL (display->shell));
+
+ gimp_ui_manager_update (window->menubar_manager, display);
}
return GIMP_OBJECT (display);
diff --git a/app/gui/gui.c b/app/gui/gui.c
index 632188b..7ff486c 100644
--- a/app/gui/gui.c
+++ b/app/gui/gui.c
@@ -532,7 +532,6 @@ gui_restore_after_callback (Gimp *gimp,
/* move keyboard focus to the display */
gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (display->shell)));
-
}
/* indicate that the application has finished loading */
@@ -702,11 +701,12 @@ gui_menu_show_tooltip (GimpUIManager *manager,
if (display)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
- GtkWidget *statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (display->shell);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- gimp_statusbar_push (GIMP_STATUSBAR (statusbar), "menu-tooltip",
- NULL, "%s", tooltip);
+ if (window)
+ gimp_statusbar_push (GIMP_STATUSBAR (window->statusbar), "menu-tooltip",
+ NULL, "%s", tooltip);
}
}
@@ -719,10 +719,11 @@ gui_menu_hide_tooltip (GimpUIManager *manager,
if (display)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (display->shell);
- GtkWidget *statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ GimpDisplayShell *shell = GIMP_DISPLAY_SHELL (display->shell);
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
- gimp_statusbar_pop (GIMP_STATUSBAR (statusbar), "menu-tooltip");
+ if (window)
+ gimp_statusbar_pop (GIMP_STATUSBAR (window->statusbar), "menu-tooltip");
}
}
diff --git a/app/tools/gimpmeasuretool.c b/app/tools/gimpmeasuretool.c
index 9338d2f..a7b943d 100644
--- a/app/tools/gimpmeasuretool.c
+++ b/app/tools/gimpmeasuretool.c
@@ -333,10 +333,10 @@ gimp_measure_tool_button_press (GimpTool *tool,
/* create the info window if necessary */
if (! measure->dialog)
{
- GtkWidget *toplevel = gtk_widget_get_toplevel (GTK_WIDGET (shell));
+ GimpImageWindow *window = gimp_display_shell_get_window (shell);
if (options->use_info_window ||
- ! GTK_WIDGET_VISIBLE (GIMP_IMAGE_WINDOW (toplevel)->statusbar))
+ ! GTK_WIDGET_VISIBLE (window->statusbar))
{
measure->dialog = gimp_measure_tool_dialog_new (measure);
g_object_add_weak_pointer (G_OBJECT (measure->dialog),
diff --git a/app/tools/gimptool.c b/app/tools/gimptool.c
index 2ae282a..e8bfb66 100644
--- a/app/tools/gimptool.c
+++ b/app/tools/gimptool.c
@@ -895,27 +895,31 @@ gimp_tool_push_status (GimpTool *tool,
const gchar *format,
...)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
- const gchar *stock_id;
- va_list args;
+ GimpDisplayShell *shell;
+ GimpImageWindow *window;
g_return_if_fail (GIMP_IS_TOOL (tool));
g_return_if_fail (GIMP_IS_DISPLAY (display));
g_return_if_fail (format != NULL);
- toplevel = gtk_widget_get_toplevel (display->shell);
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
- stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
+ if (window)
+ {
+ const gchar *stock_id;
+ va_list args;
- va_start (args, format);
+ stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
- gimp_statusbar_push_valist (GIMP_STATUSBAR (statusbar),
- G_OBJECT_TYPE_NAME (tool), stock_id,
- format, args);
+ va_start (args, format);
- va_end (args);
+ gimp_statusbar_push_valist (GIMP_STATUSBAR (window->statusbar),
+ G_OBJECT_TYPE_NAME (tool), stock_id,
+ format, args);
+
+ va_end (args);
+ }
tool->status_displays = g_list_remove (tool->status_displays, display);
tool->status_displays = g_list_prepend (tool->status_displays, display);
@@ -931,22 +935,26 @@ gimp_tool_push_status_coords (GimpTool *tool,
gdouble y,
const gchar *help)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
- const gchar *stock_id;
+ GimpDisplayShell *shell;
+ GimpImageWindow *window;
g_return_if_fail (GIMP_IS_TOOL (tool));
g_return_if_fail (GIMP_IS_DISPLAY (display));
- toplevel = gtk_widget_get_toplevel (display->shell);
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
- stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
+ if (window)
+ {
+ const gchar *stock_id;
+
+ stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
- gimp_statusbar_push_coords (GIMP_STATUSBAR (statusbar),
- G_OBJECT_TYPE_NAME (tool), stock_id,
- precision, title, x, separator, y,
- help);
+ gimp_statusbar_push_coords (GIMP_STATUSBAR (window->statusbar),
+ G_OBJECT_TYPE_NAME (tool), stock_id,
+ precision, title, x, separator, y,
+ help);
+ }
tool->status_displays = g_list_remove (tool->status_displays, display);
tool->status_displays = g_list_prepend (tool->status_displays, display);
@@ -960,21 +968,25 @@ gimp_tool_push_status_length (GimpTool *tool,
gdouble value,
const gchar *help)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
- const gchar *stock_id;
+ GimpDisplayShell *shell;
+ GimpImageWindow *window;
g_return_if_fail (GIMP_IS_TOOL (tool));
g_return_if_fail (GIMP_IS_DISPLAY (display));
- toplevel = gtk_widget_get_toplevel (display->shell);
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
+
+ if (window)
+ {
+ const gchar *stock_id;
- stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
+ stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
- gimp_statusbar_push_length (GIMP_STATUSBAR (statusbar),
- G_OBJECT_TYPE_NAME (tool), stock_id,
- title, axis, value, help);
+ gimp_statusbar_push_length (GIMP_STATUSBAR (window->statusbar),
+ G_OBJECT_TYPE_NAME (tool), stock_id,
+ title, axis, value, help);
+ }
tool->status_displays = g_list_remove (tool->status_displays, display);
tool->status_displays = g_list_prepend (tool->status_displays, display);
@@ -986,27 +998,31 @@ gimp_tool_replace_status (GimpTool *tool,
const gchar *format,
...)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
- const gchar *stock_id;
- va_list args;
+ GimpDisplayShell *shell;
+ GimpImageWindow *window;
g_return_if_fail (GIMP_IS_TOOL (tool));
g_return_if_fail (GIMP_IS_DISPLAY (display));
g_return_if_fail (format != NULL);
- toplevel = gtk_widget_get_toplevel (display->shell);
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
- stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
+ if (window)
+ {
+ const gchar *stock_id;
+ va_list args;
- va_start (args, format);
+ stock_id = gimp_viewable_get_stock_id (GIMP_VIEWABLE (tool->tool_info));
- gimp_statusbar_replace_valist (GIMP_STATUSBAR (statusbar),
- G_OBJECT_TYPE_NAME (tool), stock_id,
- format, args);
+ va_start (args, format);
- va_end (args);
+ gimp_statusbar_replace_valist (GIMP_STATUSBAR (window->statusbar),
+ G_OBJECT_TYPE_NAME (tool), stock_id,
+ format, args);
+
+ va_end (args);
+ }
tool->status_displays = g_list_remove (tool->status_displays, display);
tool->status_displays = g_list_prepend (tool->status_displays, display);
@@ -1016,17 +1032,20 @@ void
gimp_tool_pop_status (GimpTool *tool,
GimpDisplay *display)
{
- GtkWidget *toplevel;
- GtkWidget *statusbar;
+ GimpDisplayShell *shell;
+ GimpImageWindow *window;
g_return_if_fail (GIMP_IS_TOOL (tool));
g_return_if_fail (GIMP_IS_DISPLAY (display));
- toplevel = gtk_widget_get_toplevel (display->shell);
- statusbar = GIMP_IMAGE_WINDOW (toplevel)->statusbar;
+ shell = GIMP_DISPLAY_SHELL (display->shell);
+ window = gimp_display_shell_get_window (shell);
- gimp_statusbar_pop (GIMP_STATUSBAR (statusbar),
- G_OBJECT_TYPE_NAME (tool));
+ if (window)
+ {
+ gimp_statusbar_pop (GIMP_STATUSBAR (window->statusbar),
+ G_OBJECT_TYPE_NAME (tool));
+ }
tool->status_displays = g_list_remove (tool->status_displays, display);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]