summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--endless/eostopbar-private.h16
-rw-r--r--endless/eostopbar.c34
-rw-r--r--endless/eoswindow.c1
3 files changed, 38 insertions, 13 deletions
diff --git a/endless/eostopbar-private.h b/endless/eostopbar-private.h
index cabb414..3d0f4a7 100644
--- a/endless/eostopbar-private.h
+++ b/endless/eostopbar-private.h
@@ -44,16 +44,18 @@ struct _EosTopBarClass
GtkEventBoxClass parent_class;
};
-GType eos_top_bar_get_type (void) G_GNUC_CONST;
+GType eos_top_bar_get_type (void) G_GNUC_CONST;
-GtkWidget *eos_top_bar_new (void);
+GtkWidget *eos_top_bar_new (void);
-void eos_top_bar_set_left_widget (EosTopBar *self,
- GtkWidget *left_top_bar_widget);
+void eos_top_bar_set_left_widget (EosTopBar *self,
+ GtkWidget *left_top_bar_widget);
-void
-eos_top_bar_set_center_widget (EosTopBar *self,
- GtkWidget *center_top_bar_widget);
+void eos_top_bar_set_center_widget (EosTopBar *self,
+ GtkWidget *center_top_bar_widget);
+
+void eos_top_bar_update_window_maximized (EosTopBar *self,
+ gboolean is_maximized);
G_END_DECLS
diff --git a/endless/eostopbar.c b/endless/eostopbar.c
index 6d98090..735ba6c 100644
--- a/endless/eostopbar.c
+++ b/endless/eostopbar.c
@@ -25,7 +25,8 @@
#define _EOS_TOP_BAR_BUTTON_SEPARATION_PX 8
#define _EOS_TOP_BAR_VERTICAL_BUTTON_MARGIN_PX 6
#define _EOS_TOP_BAR_MINIMIZE_ICON_NAME "window-minimize-symbolic"
-#define _EOS_TOP_BAR_MAXIMIZE_ICON_NAME "face-monkey"
+#define _EOS_TOP_BAR_MAXIMIZE_ICON_NAME "window-maximize-symbolic"
+#define _EOS_TOP_BAR_UNMAXIMIZE_ICON_NAME "window-unmaximize-symbolic"
#define _EOS_TOP_BAR_CLOSE_ICON_NAME "window-close-symbolic"
typedef struct {
@@ -207,9 +208,8 @@ eos_top_bar_init (EosTopBar *self)
"halign", GTK_ALIGN_END,
"valign", GTK_ALIGN_CENTER,
NULL);
- priv->maximize_icon =
- gtk_image_new_from_icon_name (_EOS_TOP_BAR_MAXIMIZE_ICON_NAME,
- GTK_ICON_SIZE_SMALL_TOOLBAR);
+ priv->maximize_icon = gtk_image_new ();
+ eos_top_bar_update_window_maximized (self, TRUE);
g_object_set(priv->maximize_icon,
"pixel-size", _EOS_TOP_BAR_ICON_SIZE_PX,
"margin", _EOS_TOP_BAR_BUTTON_PADDING_PX,
@@ -237,10 +237,10 @@ eos_top_bar_init (EosTopBar *self)
gtk_container_add (GTK_CONTAINER (priv->actions_grid),
priv->center_top_bar_attach);
gtk_container_add (GTK_CONTAINER (priv->actions_grid),
- priv->minimize_button);
- gtk_container_add (GTK_CONTAINER (priv->actions_grid),
priv->maximize_button);
gtk_container_add (GTK_CONTAINER (priv->actions_grid),
+ priv->minimize_button);
+ gtk_container_add (GTK_CONTAINER (priv->actions_grid),
priv->close_button);
gtk_container_add (GTK_CONTAINER (self), priv->actions_grid);
@@ -323,3 +323,25 @@ eos_top_bar_set_center_widget (EosTopBar *self,
priv->center_top_bar_widget);
}
}
+
+/*
+ * eos_top_bar_update_window_maximized:
+ * @self: the top bar
+ * @is_maximized: whether the window is currently maximized
+ *
+ * Private method for eos_window to update the topbar on the window maximized
+ * state. The top bar will flip the asset of the maximized button depending on
+ * the state
+ */
+void
+eos_top_bar_update_window_maximized (EosTopBar *self,
+ gboolean is_maximized)
+{
+ g_return_if_fail (EOS_IS_TOP_BAR (self));
+ EosTopBarPrivate *priv = eos_top_bar_get_instance_private (self);
+
+ gchar *icon_name = is_maximized ? _EOS_TOP_BAR_UNMAXIMIZE_ICON_NAME : _EOS_TOP_BAR_MAXIMIZE_ICON_NAME;
+ gtk_image_set_from_icon_name (GTK_IMAGE (priv->maximize_icon),
+ icon_name,
+ GTK_ICON_SIZE_SMALL_TOOLBAR);
+}
diff --git a/endless/eoswindow.c b/endless/eoswindow.c
index 8b91919..bbe2422 100644
--- a/endless/eoswindow.c
+++ b/endless/eoswindow.c
@@ -737,6 +737,7 @@ on_window_state_event_cb (GtkWidget *widget,
EosWindowPrivate *priv = eos_window_get_instance_private (self);
GdkWindowState window_state = event->new_window_state;
priv->maximized = window_state & GDK_WINDOW_STATE_MAXIMIZED;
+ eos_top_bar_update_window_maximized (EOS_TOP_BAR (priv->top_bar), priv->maximized);
}
/* Make sure that the edge finishing does not catch input events */