[gnome-builder/gnome-builder-3-32] gui: improve focus placement on page destruction
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/gnome-builder-3-32] gui: improve focus placement on page destruction
- Date: Mon, 6 May 2019 00:11:15 +0000 (UTC)
commit f7967512d85d26134ad5d10db3dd397ff4583e46
Author: Christian Hergert <chergert redhat com>
Date: Sun May 5 17:09:20 2019 -0700
gui: improve focus placement on page destruction
src/libide/gui/ide-grid-column.c | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
---
diff --git a/src/libide/gui/ide-grid-column.c b/src/libide/gui/ide-grid-column.c
index 1fbee766a..aa882c163 100644
--- a/src/libide/gui/ide-grid-column.c
+++ b/src/libide/gui/ide-grid-column.c
@@ -108,16 +108,28 @@ ide_grid_column_remove (GtkContainer *container,
{
IdeGridColumn *self = (IdeGridColumn *)container;
GtkWidget *grid;
+ gboolean notify;
g_assert (IDE_IS_GRID_COLUMN (self));
g_assert (IDE_IS_FRAME (widget));
+ notify = g_queue_peek_head (&self->focus_stack) == (gpointer)widget;
+ g_queue_remove (&self->focus_stack, widget);
+
if (IDE_IS_GRID (grid = gtk_widget_get_parent (GTK_WIDGET (self))))
_ide_grid_stack_removed (IDE_GRID (grid), IDE_FRAME (widget));
- g_queue_remove (&self->focus_stack, widget);
-
GTK_CONTAINER_CLASS (ide_grid_column_parent_class)->remove (container, widget);
+
+ if (notify)
+ {
+ GtkWidget *head = g_queue_peek_head (&self->focus_stack);
+
+ if (head != NULL)
+ gtk_widget_grab_focus (head);
+
+ g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_CURRENT_STACK]);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]