diff options
author | Dylan McCall <dylan@endlessm.com> | 2020-03-05 12:32:11 -0800 |
---|---|---|
committer | Dylan McCall <dylan@endlessm.com> | 2020-03-05 12:32:11 -0800 |
commit | ef9bd212044985b6c51b5e4f5988e26b01236abf (patch) | |
tree | 55314b0143739960d8ae594250c341dbf1208810 /endless | |
parent | 65d48486079f47154f219ed43a67d7100fa0a6ee (diff) | |
parent | 22654df2bdae257e3b4d857d757c93d9621af861 (diff) |
Merge branch 'sdk-6' of github.com:endlessm/eos-sdk
Diffstat (limited to 'endless')
-rw-r--r-- | endless/eostopbar-private.h | 4 | ||||
-rw-r--r-- | endless/eostopbar.c | 67 | ||||
-rw-r--r-- | endless/eoswindow.c | 50 | ||||
-rw-r--r-- | endless/eoswindow.h | 2 |
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; |