diff options
author | Matthias Clasen <mclasen@redhat.com> | 2012-10-22 19:42:41 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2012-10-22 19:42:41 -0400 |
commit | bec6b260b4139d955367fa4a869c7a2cd69bf6e5 (patch) | |
tree | 3bf1e9ee561d16eed8bc4b5732729bf5100fc461 /gtk/a11y | |
parent | c51157d437b6d35022910b8d0bf0c4ac7199bf6c (diff) | |
download | gtk+-bec6b260b4139d955367fa4a869c7a2cd69bf6e5.tar.gz |
Be robust against unrealized windows in GtkWindowAccessible
Based on a patch by Albert Astals Cid,
https://bugzilla.gnome.org/show_bug.cgi?id=686152
Diffstat (limited to 'gtk/a11y')
-rw-r--r-- | gtk/a11y/gtkwindowaccessible.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/gtk/a11y/gtkwindowaccessible.c b/gtk/a11y/gtkwindowaccessible.c index 4b88fb54d9..fbc854a5f1 100644 --- a/gtk/a11y/gtkwindowaccessible.c +++ b/gtk/a11y/gtkwindowaccessible.c @@ -262,7 +262,7 @@ gtk_window_accessible_ref_state_set (AtkObject *accessible) atk_state_set_add_state (state_set, ATK_STATE_ACTIVE); gdk_window = gtk_widget_get_window (widget); - if (window) + if (gdk_window) { state = gdk_window_get_state (gdk_window); if (state & GDK_WINDOW_STATE_ICONIFIED) @@ -307,6 +307,7 @@ gtk_window_accessible_get_extents (AtkComponent *component, AtkCoordType coord_type) { GtkWidget *widget; + GdkWindow *window; GdkRectangle rect; gint x_toplevel, y_toplevel; @@ -323,7 +324,11 @@ gtk_window_accessible_get_extents (AtkComponent *component, return; } - gdk_window_get_frame_extents (gtk_widget_get_window (widget), &rect); + window = gtk_widget_get_window (widget); + if (window == NULL) + return; + + gdk_window_get_frame_extents (window, &rect); *width = rect.width; *height = rect.height; @@ -338,8 +343,7 @@ gtk_window_accessible_get_extents (AtkComponent *component, *y = rect.y; if (coord_type == ATK_XY_WINDOW) { - gdk_window_get_origin (gtk_widget_get_window (widget), - &x_toplevel, &y_toplevel); + gdk_window_get_origin (window, &x_toplevel, &y_toplevel); *x -= x_toplevel; *y -= y_toplevel; } @@ -351,6 +355,7 @@ gtk_window_accessible_get_size (AtkComponent *component, gint *height) { GtkWidget *widget; + GdkWindow *window; GdkRectangle rect; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (component)); @@ -366,7 +371,11 @@ gtk_window_accessible_get_size (AtkComponent *component, return; } - gdk_window_get_frame_extents (gtk_widget_get_window (widget), &rect); + window = gtk_widget_get_window (widget); + if (window == NULL) + return; + + gdk_window_get_frame_extents (window, &rect); *width = rect.width; *height = rect.height; |