[gnome-builder] command-bar: close workbench cleanly when command bar focused
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] command-bar: close workbench cleanly when command bar focused
- Date: Mon, 27 Apr 2015 23:20:10 +0000 (UTC)
commit ac80fef091b5a6ecd89ad47cd8a873bcd0f84ad3
Author: Christian Hergert <christian hergert me>
Date: Mon Apr 27 16:20:05 2015 -0700
command-bar: close workbench cleanly when command bar focused
We got into a weird state trying to restore focus when leaving the command
bar and the workbench was closing.
src/commands/gb-command-bar.c | 8 +++++++-
src/workbench/gb-workbench.c | 8 ++++++++
src/workbench/gb-workbench.h | 1 +
3 files changed, 16 insertions(+), 1 deletions(-)
---
diff --git a/src/commands/gb-command-bar.c b/src/commands/gb-command-bar.c
index d07ae28..049b835 100644
--- a/src/commands/gb-command-bar.c
+++ b/src/commands/gb-command-bar.c
@@ -117,11 +117,17 @@ gb_command_bar_hide (GbCommandBar *bar)
gtk_revealer_set_reveal_child (GTK_REVEALER (bar), FALSE);
workbench = gb_widget_get_workbench (GTK_WIDGET (bar));
+ if ((workbench == NULL) || gb_workbench_get_closing (workbench))
+ return;
+
workspace = gb_workbench_get_active_workspace (workbench);
- focus = GTK_WIDGET (workspace);
+ if (workspace == NULL)
+ return;
if (bar->priv->last_focus)
focus = find_alternate_focus (bar->priv->last_focus);
+ else
+ focus = GTK_WIDGET (workspace);
gtk_widget_grab_focus (focus);
}
diff --git a/src/workbench/gb-workbench.c b/src/workbench/gb-workbench.c
index fe6d735..2a90fb2 100644
--- a/src/workbench/gb-workbench.c
+++ b/src/workbench/gb-workbench.c
@@ -884,3 +884,11 @@ gb_workbench_add_temporary_buffer (GbWorkbench *self)
buffer_manager = ide_context_get_buffer_manager (context);
buffer = ide_buffer_manager_create_buffer (buffer_manager);
}
+
+gboolean
+gb_workbench_get_closing (GbWorkbench *self)
+{
+ g_return_val_if_fail (GB_IS_WORKBENCH (self), FALSE);
+
+ return (self->unloading || (self->disposing > 0));
+}
diff --git a/src/workbench/gb-workbench.h b/src/workbench/gb-workbench.h
index ddc86e9..c7490f3 100644
--- a/src/workbench/gb-workbench.h
+++ b/src/workbench/gb-workbench.h
@@ -53,6 +53,7 @@ void gb_workbench_open_uri_list (GbWorkbench *self,
GbCommandManager *gb_workbench_get_command_manager (GbWorkbench *self);
gpointer gb_workbench_get_workspace_typed (GbWorkbench *self,
GType workspace_type);
+gboolean gb_workbench_get_closing (GbWorkbench *self);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]