aboutsummarylogtreecommitdiffstats
path: root/csd__clean-headerbar.patch
diff options
context:
space:
mode:
Diffstat (limited to 'csd__clean-headerbar.patch')
-rw-r--r--csd__clean-headerbar.patch89
1 files changed, 73 insertions, 16 deletions
diff --git a/csd__clean-headerbar.patch b/csd__clean-headerbar.patch
index 008312eccac4..e65860c1f015 100644
--- a/csd__clean-headerbar.patch
+++ b/csd__clean-headerbar.patch
@@ -1,27 +1,59 @@
diff --color -U 5 -r -Z -B ./org/gtk/gtkheaderbar.c ./mod/gtk/gtkheaderbar.c
---- ./org/gtk/gtkheaderbar.c 2017-10-27 22:06:52.000000000 +0200
-+++ ./mod/gtk/gtkheaderbar.c 2017-10-30 22:47:52.557245688 +0100
-@@ -321,10 +321,12 @@
-
+--- ./org/gtk/gtkheaderbar.c 2018-01-15 14:21:38.000000000 +0100
++++ ./mod/gtk/gtkheaderbar.c 2018-05-30 02:00:19.887457964 +0200
+@@ -298,10 +298,31 @@
+ priv->titlebar_end_separator = NULL;
+ }
+
+ priv->titlebar_icon = NULL;
+
++ gboolean csd_cleaned_headerbar = (!gtk_style_context_has_class (gtk_widget_get_style_context (toplevel), "csd") &&
++ !gtk_style_context_has_class (gtk_widget_get_style_context (toplevel), "solid-csd"));
++ if (csd_cleaned_headerbar)
++ {
++ if (priv->label_box != NULL)
++ {
++ priv->label_box = NULL;
++ priv->title_label = NULL;
++ priv->subtitle_label = NULL;
++ }
++ static gboolean style_added = FALSE;
++ if (!style_added)
++ {
++ style_added = TRUE;
++ GtkCssProvider *provider = gtk_css_provider_new ();
++ gtk_css_provider_load_from_data (provider,
++ "headerbar, .titlebar { border-radius: 0; border-top: 0; box-shadow: none; }", -1, NULL);
++ gtk_style_context_add_provider_for_screen (gtk_widget_get_screen (widget),
++ GTK_STYLE_PROVIDER (provider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
++ }
++ }
+ if (!priv->shows_wm_decorations)
+ return;
+
+ direction = gtk_widget_get_direction (widget);
+
+@@ -325,10 +346,12 @@
+
is_sovereign_window = (!gtk_window_get_modal (window) &&
gtk_window_get_transient_for (window) == NULL &&
gtk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_NORMAL);
-
-+ if (g_getenv ("GTK_CSD") == FALSE)
-+ layout_desc = g_strdup ("menu");
+
++ if (csd_cleaned_headerbar)
++ layout_desc = strstr (layout_desc, "menu") ? g_strdup ("menu") : g_strdup ("");
tokens = g_strsplit (layout_desc, ":", 2);
if (tokens)
{
for (i = 0; i < 2; i++)
{
-@@ -385,13 +387,13 @@
+@@ -389,13 +412,13 @@
accessible = gtk_widget_get_accessible (button);
if (GTK_IS_ACCESSIBLE (accessible))
atk_object_set_name (accessible, _("Application menu"));
-
+
priv->titlebar_icon = image;
- if (!_gtk_header_bar_update_window_icon (bar, window))
-+ if (g_getenv ("GTK_CSD") == FALSE || !_gtk_header_bar_update_window_icon (bar, window))
++ if (csd_cleaned_headerbar || !_gtk_header_bar_update_window_icon (bar, window))
gtk_image_set_from_icon_name (GTK_IMAGE (priv->titlebar_icon),
- "application-x-executable-symbolic", GTK_ICON_SIZE_MENU);
+ "pan-down-symbolic", GTK_ICON_SIZE_MENU);
@@ -30,18 +62,43 @@ diff --color -U 5 -r -Z -B ./org/gtk/gtkheaderbar.c ./mod/gtk/gtkheaderbar.c
is_sovereign_window)
{
button = gtk_button_new ();
+@@ -1359,10 +1382,11 @@
+ }
+
+ gtk_widget_set_visible (priv->subtitle_sizing_label, priv->has_subtitle || (priv->subtitle && priv->subtitle[0]));
+
+ g_object_notify_by_pspec (G_OBJECT (bar), header_bar_props[PROP_SUBTITLE]);
++ g_object_notify_by_pspec (G_OBJECT (bar), header_bar_props[PROP_TITLE]);
+ }
+
+ /**
+ * gtk_header_bar_get_subtitle:
+ * @bar: a #GtkHeaderBar
diff --color -U 5 -r -Z -B ./org/gtk/gtkwindow.c ./mod/gtk/gtkwindow.c
---- ./org/gtk/gtkwindow.c 2017-10-27 22:06:52.000000000 +0200
-+++ ./mod/gtk/gtkwindow.c 2017-10-30 22:46:41.683908843 +0100
-@@ -9267,10 +9267,11 @@
-
+--- ./org/gtk/gtkwindow.c 2018-01-15 14:21:38.000000000 +0100
++++ ./mod/gtk/gtkwindow.c 2018-05-30 02:00:46.846359548 +0200
+@@ -4161,10 +4161,12 @@
+ GtkWindow *self)
+ {
+ const gchar *title;
+
+ title = gtk_header_bar_get_title (titlebar);
++ if (gtk_header_bar_get_subtitle (titlebar))
++ title = g_strconcat (title, " — ", gtk_header_bar_get_subtitle (titlebar), NULL);
+ gtk_window_set_title_internal (self, title, FALSE);
+ }
+
+ /**
+ * gtk_window_set_titlebar:
+@@ -9274,10 +9276,11 @@
+
static void
gtk_window_do_popup (GtkWindow *window,
GdkEventButton *event)
{
-+ if (g_getenv ("GTK_CSD") == FALSE) return;
++ if (!window->priv->client_decorated) return;
if (!gdk_window_show_window_menu (_gtk_widget_get_window (GTK_WIDGET (window)),
(GdkEvent *) event))
gtk_window_do_popup_fallback (window, event);
}
-
+