[gimp] app: Handle gimp_image_window_get_active_shell() returning NULL
- From: Martin Nordholts <martinn src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] app: Handle gimp_image_window_get_active_shell() returning NULL
- Date: Sun, 25 Oct 2009 18:59:42 +0000 (UTC)
commit 75ee76ecb68f15ee63cbf8955250dc79139b32d3
Author: Martin Nordholts <martinn src gnome org>
Date: Sun Oct 25 15:24:44 2009 +0100
app: Handle gimp_image_window_get_active_shell() returning NULL
When rearranging the UI it is pretty common that
gimp_image_window_get_active_shell() returns NULL so check for that.
app/actions/actions.c | 20 ++++++++++++++---
app/display/gimpimagewindow.c | 47 +++++++++++++++++++++++++++++++---------
2 files changed, 52 insertions(+), 15 deletions(-)
---
diff --git a/app/actions/actions.c b/app/actions/actions.c
index 51b0970..d2ee381 100644
--- a/app/actions/actions.c
+++ b/app/actions/actions.c
@@ -273,7 +273,10 @@ action_data_get_gimp (gpointer data)
if (GIMP_IS_DISPLAY (data))
return ((GimpDisplay *) data)->gimp;
else if (GIMP_IS_IMAGE_WINDOW (data))
- return gimp_image_window_get_active_shell (data)->display->gimp;
+ {
+ GimpDisplayShell *shell = gimp_image_window_get_active_shell (data);
+ return shell ? shell->display->gimp : NULL;
+ }
else if (GIMP_IS_GIMP (data))
return data;
else if (GIMP_IS_DOCK (data))
@@ -307,7 +310,10 @@ action_data_get_context (gpointer data)
if (GIMP_IS_DISPLAY (data))
return gimp_get_user_context (((GimpDisplay *) data)->gimp);
else if (GIMP_IS_IMAGE_WINDOW (data))
- return gimp_get_user_context (gimp_image_window_get_active_shell (data)->display->gimp);
+ {
+ GimpDisplayShell *shell = gimp_image_window_get_active_shell (data);
+ return shell ? gimp_get_user_context (shell->display->gimp) : NULL;
+ }
else if (GIMP_IS_GIMP (data))
return gimp_get_user_context (data);
else if (GIMP_IS_DOCK (data))
@@ -341,7 +347,10 @@ action_data_get_image (gpointer data)
if (GIMP_IS_DISPLAY (data))
display = (GimpDisplay *) data;
else if (GIMP_IS_IMAGE_WINDOW (data))
- display = gimp_image_window_get_active_shell (data)->display;
+ {
+ GimpDisplayShell *shell = gimp_image_window_get_active_shell (data);
+ display = shell ? shell->display : NULL;
+ }
else if (GIMP_IS_GIMP (data))
context = gimp_get_user_context (data);
else if (GIMP_IS_DOCK (data))
@@ -377,7 +386,10 @@ action_data_get_display (gpointer data)
if (GIMP_IS_DISPLAY (data))
return data;
else if (GIMP_IS_IMAGE_WINDOW (data))
- return gimp_image_window_get_active_shell (data)->display;
+ {
+ GimpDisplayShell *shell = gimp_image_window_get_active_shell (data);
+ return shell ? shell->display : NULL;
+ }
else if (GIMP_IS_GIMP (data))
context = gimp_get_user_context (data);
else if (GIMP_IS_DOCK (data))
diff --git a/app/display/gimpimagewindow.c b/app/display/gimpimagewindow.c
index 23146de..4b31652 100644
--- a/app/display/gimpimagewindow.c
+++ b/app/display/gimpimagewindow.c
@@ -411,7 +411,8 @@ gimp_image_window_delete_event (GtkWidget *widget,
GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
/* FIXME multiple shells */
- gimp_display_shell_close (shell, FALSE);
+ if (shell)
+ gimp_display_shell_close (shell, FALSE);
return TRUE;
}
@@ -444,7 +445,7 @@ gimp_image_window_configure_event (GtkWidget *widget,
/* FIXME multiple shells */
GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
- if (gimp_display_get_image (shell->display))
+ if (shell && gimp_display_get_image (shell->display))
shell->size_allocate_from_configure_event = TRUE;
}
@@ -459,6 +460,9 @@ gimp_image_window_window_state_event (GtkWidget *widget,
GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
+ if (! shell)
+ return FALSE;
+
private->window_state = event->new_window_state;
if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
@@ -517,16 +521,21 @@ static void
gimp_image_window_style_set (GtkWidget *widget,
GtkStyle *prev_style)
{
- GimpImageWindow *window = GIMP_IMAGE_WINDOW (widget);
- GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
- GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
- GimpStatusbar *statusbar = gimp_display_shell_get_statusbar (shell);
- GtkRequisition requisition;
- GdkGeometry geometry;
- GdkWindowHints geometry_mask;
+ GimpImageWindow *window = GIMP_IMAGE_WINDOW (widget);
+ GimpImageWindowPrivate *private = GIMP_IMAGE_WINDOW_GET_PRIVATE (window);
+ GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
+ GimpStatusbar *statusbar = NULL;
+ GtkRequisition requisition = { 0, };
+ GdkGeometry geometry = { 0, };
+ GdkWindowHints geometry_mask = 0;
GTK_WIDGET_CLASS (parent_class)->style_set (widget, prev_style);
+ if (! shell)
+ return;
+
+ statusbar = gimp_display_shell_get_statusbar (shell);
+
gtk_widget_size_request (GTK_WIDGET (statusbar), &requisition);
geometry.min_height = 23;
@@ -824,6 +833,9 @@ gimp_image_window_shrink_wrap (GimpImageWindow *window,
active_shell = gimp_image_window_get_active_shell (window);
+ if (!active_shell)
+ return;
+
image = gimp_display_get_image (active_shell->display);
widget = GTK_WIDGET (window);
@@ -951,7 +963,12 @@ gimp_image_window_show_tooltip (GimpUIManager *manager,
GimpImageWindow *window)
{
GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
- GimpStatusbar *statusbar = gimp_display_shell_get_statusbar (shell);
+ GimpStatusbar *statusbar = NULL;
+
+ if (! shell)
+ return;
+
+ statusbar = gimp_display_shell_get_statusbar (shell);
gimp_statusbar_push (statusbar, "menu-tooltip",
NULL, "%s", tooltip);
@@ -962,7 +979,12 @@ gimp_image_window_hide_tooltip (GimpUIManager *manager,
GimpImageWindow *window)
{
GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
- GimpStatusbar *statusbar = gimp_display_shell_get_statusbar (shell);
+ GimpStatusbar *statusbar = NULL;
+
+ if (! shell)
+ return;
+
+ statusbar = gimp_display_shell_get_statusbar (shell);
gimp_statusbar_pop (statusbar, "menu-tooltip");
}
@@ -974,6 +996,9 @@ gimp_image_window_shell_events (GtkWidget *widget,
{
GimpDisplayShell *shell = gimp_image_window_get_active_shell (window);
+ if (! shell)
+ return FALSE;
+
return gimp_display_shell_events (widget, event, shell);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]