summaryrefslogtreecommitdiff
path: root/endless
diff options
context:
space:
mode:
authorDylan McCall <dylan@endlessm.com>2020-03-05 12:32:11 -0800
committerDylan McCall <dylan@endlessm.com>2020-03-05 12:32:11 -0800
commitef9bd212044985b6c51b5e4f5988e26b01236abf (patch)
tree55314b0143739960d8ae594250c341dbf1208810 /endless
parent65d48486079f47154f219ed43a67d7100fa0a6ee (diff)
parent22654df2bdae257e3b4d857d757c93d9621af861 (diff)
Merge branch 'sdk-6' of github.com:endlessm/eos-sdk
Diffstat (limited to 'endless')
-rw-r--r--endless/eostopbar-private.h4
-rw-r--r--endless/eostopbar.c67
-rw-r--r--endless/eoswindow.c50
-rw-r--r--endless/eoswindow.h2
4 files changed, 10 insertions, 113 deletions
diff --git a/endless/eostopbar-private.h b/endless/eostopbar-private.h
index a152255..a8d2572 100644
--- a/endless/eostopbar-private.h
+++ b/endless/eostopbar-private.h
@@ -36,12 +36,12 @@ typedef struct _EosTopBarClass EosTopBarClass;
struct _EosTopBar
{
- GtkEventBox parent;
+ GtkHeaderBar parent;
};
struct _EosTopBarClass
{
- GtkEventBoxClass parent_class;
+ GtkHeaderBarClass parent_class;
};
GType eos_top_bar_get_type (void) G_GNUC_CONST;
diff --git a/endless/eostopbar.c b/endless/eostopbar.c
index 886d36a..8423099 100644
--- a/endless/eostopbar.c
+++ b/endless/eostopbar.c
@@ -95,68 +95,6 @@ eos_top_bar_set_property (GObject *object,
}
static void
-eos_top_bar_get_preferred_height (GtkWidget *widget,
- int *minimum,
- int *natural)
-{
- gboolean left_widget_visible = FALSE, center_widget_visible = FALSE;
- EosTopBar *self = EOS_TOP_BAR (widget);
- EosTopBarPrivate *priv = eos_top_bar_get_instance_private (self);
- if (priv->left_top_bar_widget)
- {
- left_widget_visible = gtk_widget_get_visible (priv->left_top_bar_widget);
- gtk_widget_set_visible (priv->left_top_bar_widget, TRUE);
- }
- if (priv->center_top_bar_widget)
- {
- center_widget_visible = gtk_widget_get_visible (priv->center_top_bar_widget);
- gtk_widget_set_visible (priv->center_top_bar_widget, TRUE);
- }
-
- GTK_WIDGET_CLASS (eos_top_bar_parent_class)->get_preferred_height (widget,
- minimum,
- natural);
- if (minimum != NULL)
- *minimum = MAX (_EOS_TOP_BAR_HEIGHT_PX, *minimum);
- if (natural != NULL)
- *natural = MAX (_EOS_TOP_BAR_HEIGHT_PX, *natural);
-
- if (priv->left_top_bar_widget)
- {
- gtk_widget_set_visible (priv->left_top_bar_widget, left_widget_visible);
- }
- if (priv->center_top_bar_widget)
- {
- gtk_widget_set_visible (priv->center_top_bar_widget, center_widget_visible);
- }
-}
-
-/* Draw the edge finishing on the two lines inside the topbar; see
-after_draw_cb() in eoswindow.c for the two lines outside the topbar */
-static gboolean
-eos_top_bar_draw (GtkWidget *self_widget,
- cairo_t *cr)
-{
- GTK_WIDGET_CLASS (eos_top_bar_parent_class)->draw (self_widget, cr);
-
- gint width = gtk_widget_get_allocated_width (self_widget);
- gint height = gtk_widget_get_allocated_height (self_widget);
- cairo_set_line_width (cr, 1.0);
- /* Highlight: #ffffff, opacity 5% */
- cairo_set_source_rgba (cr, 1.0, 1.0, 1.0, 0.05);
- cairo_move_to (cr, 0, height - 1.5);
- cairo_rel_line_to (cr, width, 0);
- cairo_stroke (cr);
- /* Baseline: #0a0a0a, opacity 100% */
- cairo_set_source_rgb (cr, 0.039, 0.039, 0.039);
- cairo_move_to (cr, 0, height - 0.5);
- cairo_rel_line_to (cr, width, 0);
- cairo_stroke (cr);
-
- return GDK_EVENT_PROPAGATE;
-}
-
-static void
on_credits_clicked (GtkButton *button,
EosTopBar *self)
{
@@ -172,8 +110,6 @@ eos_top_bar_class_init (EosTopBarClass *klass)
object_class->constructed = eos_top_bar_constructed;
object_class->get_property = eos_top_bar_get_property;
object_class->set_property = eos_top_bar_set_property;
- widget_class->get_preferred_height = eos_top_bar_get_preferred_height;
- widget_class->draw = eos_top_bar_draw;
gtk_widget_class_set_template_from_resource (widget_class,
"/com/endlessm/sdk/widgets/topbar.ui");
@@ -272,7 +208,10 @@ eos_top_bar_set_center_widget (EosTopBar *self,
{
gtk_container_add (GTK_CONTAINER (priv->center_top_bar_attach),
priv->center_top_bar_widget);
+ gtk_widget_show (priv->center_top_bar_attach);
gtk_widget_show (priv->center_top_bar_widget);
+ } else {
+ gtk_widget_hide (priv->center_top_bar_attach);
}
}
diff --git a/endless/eoswindow.c b/endless/eoswindow.c
index 3739497..b8e93d3 100644
--- a/endless/eoswindow.c
+++ b/endless/eoswindow.c
@@ -82,8 +82,6 @@
#define CSS_TEMPLATE "#%s %s #%s %s"
-#define _EOS_TOP_BAR_EDGE_FINISHING_HEIGHT_PX 2
-
#define UNMAXIMIZE_EVENT "2b5c044d-d819-4e2c-a3a6-c485c1ac371e"
typedef struct {
@@ -92,7 +90,6 @@ typedef struct {
GtkWidget *top_bar;
GtkWidget *overlay;
GtkSizeGroup *overlay_size_group;
- GtkWidget *edge_finishing;
GtkWidget *current_background;
GtkWidget *next_background;
GtkWidget *background_stack;
@@ -485,7 +482,6 @@ eos_window_finalize (GObject *object)
EosWindow *self = EOS_WINDOW (object);
EosWindowPrivate *priv = eos_window_get_instance_private (self);
- g_object_unref (priv->edge_finishing);
g_object_unref (priv->background_provider);
g_object_unref (priv->font_size_provider);
g_free (priv->current_background_css_props);
@@ -599,6 +595,7 @@ eos_window_class_init (EosWindowClass *klass)
widget_class->configure_event = eos_window_configure_event;
gtk_widget_class_set_css_name (widget_class, "EosWindow");
+
/**
* EosWindow:application:
*
@@ -745,28 +742,6 @@ on_credits_clicked (GtkWidget *top_bar,
NULL);
}
-/* Draw the edge finishing on the two lines on top of the window's content;
-see eos_top_bar_draw() for the two lines inside the top bar */
-static gboolean
-on_edge_finishing_draw_cb (GtkWidget *edge_finishing,
- cairo_t *cr)
-{
- gint width = gtk_widget_get_allocated_width (edge_finishing);
- cairo_set_line_width (cr, 1.0);
- /* Shadow 1: #000000, opacity 15% */
- cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.15);
- cairo_move_to (cr, 0, 0.5);
- cairo_rel_line_to (cr, width, 0);
- cairo_stroke (cr);
- /* Shadow 2: #000000, opacity 5% */
- cairo_set_source_rgba (cr, 0.0, 0.0, 0.0, 0.05);
- cairo_move_to (cr, 0, 1.5);
- cairo_rel_line_to (cr, width, 0);
- cairo_stroke (cr);
-
- return GDK_EVENT_PROPAGATE;
-}
-
static void
eos_window_init (EosWindow *self)
{
@@ -777,6 +752,8 @@ eos_window_init (EosWindow *self)
gtk_window_set_titlebar (GTK_WINDOW (self), priv->top_bar);
priv->overlay = gtk_overlay_new ();
+ gtk_style_context_add_class (gtk_widget_get_style_context (priv->overlay),
+ EOS_WINDOW_STYLE_CLASS_INNER);
gtk_container_add (GTK_CONTAINER (self), priv->overlay);
priv->background_stack = gtk_stack_new ();
@@ -816,18 +793,6 @@ eos_window_init (EosWindow *self)
priv->overlay_size_group = gtk_size_group_new (GTK_SIZE_GROUP_BOTH);
gtk_size_group_add_widget (priv->overlay_size_group, priv->background_stack);
- priv->edge_finishing = gtk_drawing_area_new ();
- gtk_widget_set_vexpand (priv->edge_finishing, FALSE);
- gtk_widget_set_valign (priv->edge_finishing, GTK_ALIGN_START);
- /* has_window == FALSE is necessary for not catching input events */
- gtk_widget_set_has_window (priv->edge_finishing, FALSE);
- gtk_widget_set_size_request (priv->edge_finishing,
- -1, _EOS_TOP_BAR_EDGE_FINISHING_HEIGHT_PX);
- g_signal_connect (priv->edge_finishing, "draw",
- G_CALLBACK (on_edge_finishing_draw_cb), NULL);
- // We ref the edge finishing as it gets reparented when page managers change
- g_object_ref(priv->edge_finishing);
-
gtk_window_maximize (GTK_WINDOW (self));
gtk_window_set_default_size (GTK_WINDOW (self), DEFAULT_WINDOW_WIDTH, DEFAULT_WINDOW_HEIGHT);
@@ -897,10 +862,6 @@ eos_window_set_page_manager (EosWindow *self,
if (priv->page_manager != NULL)
{
- // We need to remove the edge finishing and add it again so it always
- // appears over the page manager
- gtk_container_remove (GTK_CONTAINER (priv->overlay),
- priv->edge_finishing);
gtk_size_group_remove_widget (priv->overlay_size_group,
GTK_WIDGET (priv->page_manager));
gtk_container_remove (GTK_CONTAINER (priv->overlay),
@@ -909,11 +870,6 @@ eos_window_set_page_manager (EosWindow *self,
priv->page_manager = page_manager;
gtk_overlay_add_overlay (GTK_OVERLAY (priv->overlay),
GTK_WIDGET (priv->page_manager));
- gtk_overlay_add_overlay (GTK_OVERLAY (priv->overlay),
- priv->edge_finishing);
- gtk_overlay_set_overlay_pass_through(GTK_OVERLAY (priv->overlay),
- priv->edge_finishing,
- TRUE);
gtk_size_group_add_widget (priv->overlay_size_group,
GTK_WIDGET (priv->page_manager));
diff --git a/endless/eoswindow.h b/endless/eoswindow.h
index 14ff399..3411b9b 100644
--- a/endless/eoswindow.h
+++ b/endless/eoswindow.h
@@ -36,6 +36,8 @@ G_BEGIN_DECLS
(G_TYPE_INSTANCE_GET_CLASS ((obj), \
EOS_TYPE_WINDOW, EosWindowClass))
+#define EOS_WINDOW_STYLE_CLASS_INNER "eos-window-inner"
+
typedef struct _EosWindow EosWindow;
typedef struct _EosWindowClass EosWindowClass;