[gnome-builder] gui: improve focus placement on page destruction
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] gui: improve focus placement on page destruction
- Date: Mon, 6 May 2019 00:09:50 +0000 (UTC)
commit ae553e8b993c965cd5bb162c265a4a790c8a4beb
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]