[gnome-builder] workbench: change close button to unfullscreen when fullscreen
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] workbench: change close button to unfullscreen when fullscreen
- Date: Mon, 24 Jul 2017 01:22:07 +0000 (UTC)
commit 51ca80c3eba3397c15f777b7322955844fd43848
Author: Christian Hergert <chergert redhat com>
Date: Sun Jul 23 18:19:25 2017 -0700
workbench: change close button to unfullscreen when fullscreen
If we are in the fullscreen state, we want to hide the close button to
reduce the chances of accidentally closing things and instead provide an
unfullscreen button.
This more closely matches gedit and others.
libide/workbench/ide-workbench-header-bar.c | 14 ++++++++++++++
libide/workbench/ide-workbench-header-bar.ui | 15 +++++++++++++++
libide/workbench/ide-workbench-private.h | 15 +++++++++------
libide/workbench/ide-workbench.c | 2 ++
4 files changed, 40 insertions(+), 6 deletions(-)
---
diff --git a/libide/workbench/ide-workbench-header-bar.c b/libide/workbench/ide-workbench-header-bar.c
index 07c01d9..4f7ce35 100644
--- a/libide/workbench/ide-workbench-header-bar.c
+++ b/libide/workbench/ide-workbench-header-bar.c
@@ -31,6 +31,7 @@
typedef struct
{
+ GtkToggleButton *fullscreen_button;
GtkMenuButton *menu_button;
DzlPriorityBox *right_box;
DzlPriorityBox *left_box;
@@ -86,6 +87,7 @@ ide_workbench_header_bar_class_init (IdeWorkbenchHeaderBarClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
gtk_widget_class_set_template_from_resource (widget_class,
"/org/gnome/builder/ui/ide-workbench-header-bar.ui");
+ gtk_widget_class_bind_template_child_private (widget_class, IdeWorkbenchHeaderBar, fullscreen_button);
gtk_widget_class_bind_template_child_private (widget_class, IdeWorkbenchHeaderBar, left_box);
gtk_widget_class_bind_template_child_private (widget_class, IdeWorkbenchHeaderBar, menu_button);
gtk_widget_class_bind_template_child_private (widget_class, IdeWorkbenchHeaderBar, omni_bar);
@@ -247,3 +249,15 @@ ide_workbench_header_bar_get_omni_bar (IdeWorkbenchHeaderBar *self)
return priv->omni_bar;
}
+
+void
+_ide_workbench_header_bar_set_fullscreen (IdeWorkbenchHeaderBar *self,
+ gboolean fullscreen)
+{
+ IdeWorkbenchHeaderBarPrivate *priv = ide_workbench_header_bar_get_instance_private (self);
+
+ g_return_if_fail (IDE_IS_WORKBENCH_HEADER_BAR (self));
+
+ gtk_widget_set_visible (GTK_WIDGET (priv->fullscreen_button), fullscreen);
+ gtk_header_bar_set_show_close_button (GTK_HEADER_BAR (self), !fullscreen);
+}
diff --git a/libide/workbench/ide-workbench-header-bar.ui b/libide/workbench/ide-workbench-header-bar.ui
index e32bbc2..7a56759 100644
--- a/libide/workbench/ide-workbench-header-bar.ui
+++ b/libide/workbench/ide-workbench-header-bar.ui
@@ -68,6 +68,21 @@
</child>
</object>
</child>
+ <child>
+ <object class="GtkToggleButton" id="fullscreen_button">
+ <property name="action-name">win.fullscreen</property>
+ <property name="focus-on-click">false</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">view-restore-symbolic</property>
+ <property name="visible">true</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
<packing>
<property name="priority">-100000</property>
diff --git a/libide/workbench/ide-workbench-private.h b/libide/workbench/ide-workbench-private.h
index 7d3a6fb..1e470ff 100644
--- a/libide/workbench/ide-workbench-private.h
+++ b/libide/workbench/ide-workbench-private.h
@@ -51,12 +51,15 @@ struct _IdeWorkbench
GObject *selection_owner;
};
-void ide_workbench_set_context (IdeWorkbench *workbench,
- IdeContext *context);
-void ide_workbench_actions_init (IdeWorkbench *self);
-void ide_workbench_set_selection_owner (IdeWorkbench *self,
- GObject *object);
-GObject *ide_workbench_get_selection_owner (IdeWorkbench *self);
+void ide_workbench_set_context (IdeWorkbench *workbench,
+ IdeContext *context);
+void ide_workbench_actions_init (IdeWorkbench *self);
+void ide_workbench_set_selection_owner (IdeWorkbench *self,
+ GObject *object);
+GObject *ide_workbench_get_selection_owner (IdeWorkbench *self);
+
+void _ide_workbench_header_bar_set_fullscreen (IdeWorkbenchHeaderBar *self,
+ gboolean fullscreen);
G_END_DECLS
diff --git a/libide/workbench/ide-workbench.c b/libide/workbench/ide-workbench.c
index 6bd25ae..6439103 100644
--- a/libide/workbench/ide-workbench.c
+++ b/libide/workbench/ide-workbench.c
@@ -222,6 +222,8 @@ ide_workbench_set_fullscreen (DzlApplicationWindow *window,
gtk_container_foreach (GTK_CONTAINER (self->perspectives_stack),
ide_workbench_notify_fullscreen,
GINT_TO_POINTER (fullscreen));
+
+ _ide_workbench_header_bar_set_fullscreen (self->header_bar, fullscreen);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]