[gtk/wip/exalm/window-headerbar: 1/2] headerbar: Update window buttons automatically
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/wip/exalm/window-headerbar: 1/2] headerbar: Update window buttons automatically
- Date: Wed, 22 Apr 2020 18:18:58 +0000 (UTC)
commit 6c5284e0a2ce85ebe3b70025ceb61fbed43c0a6b
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Wed Apr 22 22:39:40 2020 +0500
headerbar: Update window buttons automatically
Update the layout when any of the following properties changes:
* modal
* transient-for
* resizable
* deletable
Stop updating it from GtkWindow, make that function static.
gtk/gtkheaderbar.c | 16 +++++++++++++---
gtk/gtkheaderbarprivate.h | 1 -
gtk/gtkwindow.c | 8 ++------
3 files changed, 15 insertions(+), 10 deletions(-)
---
diff --git a/gtk/gtkheaderbar.c b/gtk/gtkheaderbar.c
index 1c540d2f4b..e5008ea973 100644
--- a/gtk/gtkheaderbar.c
+++ b/gtk/gtkheaderbar.c
@@ -275,7 +275,7 @@ _gtk_header_bar_update_separator_visibility (GtkHeaderBar *bar)
gtk_widget_set_visible (priv->titlebar_end_separator, have_visible_at_end);
}
-void
+static void
_gtk_header_bar_update_window_buttons (GtkHeaderBar *bar)
{
GtkHeaderBarPrivate *priv = gtk_header_bar_get_instance_private (bar);
@@ -1006,8 +1006,18 @@ gtk_header_bar_realize (GtkWidget *widget)
root = GTK_WIDGET (gtk_widget_get_root (widget));
if (GTK_IS_WINDOW (root))
- g_signal_connect_swapped (root, "notify::icon-name",
- G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
+ {
+ g_signal_connect_swapped (root, "notify::modal",
+ G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
+ g_signal_connect_swapped (root, "notify::transient-for",
+ G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
+ g_signal_connect_swapped (root, "notify::resizable",
+ G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
+ g_signal_connect_swapped (root, "notify::deletable",
+ G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
+ g_signal_connect_swapped (root, "notify::icon-name",
+ G_CALLBACK (_gtk_header_bar_update_window_buttons), widget);
+ }
_gtk_header_bar_update_window_buttons (GTK_HEADER_BAR (widget));
}
diff --git a/gtk/gtkheaderbarprivate.h b/gtk/gtkheaderbarprivate.h
index 11d8ed0748..d6a0a7cda3 100644
--- a/gtk/gtkheaderbarprivate.h
+++ b/gtk/gtkheaderbarprivate.h
@@ -25,7 +25,6 @@
G_BEGIN_DECLS
void _gtk_header_bar_track_default_decoration (GtkHeaderBar *bar);
-void _gtk_header_bar_update_window_buttons (GtkHeaderBar *bar);
G_END_DECLS
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 0abba8d1e7..5de13adca4 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -46,7 +46,7 @@
#include "gtkgesturedrag.h"
#include "gtkgestureclick.h"
#include "gtkgestureprivate.h"
-#include "gtkheaderbarprivate.h"
+#include "gtkheaderbar.h"
#include "gtkicontheme.h"
#include "gtkintl.h"
#include "gtkmain.h"
@@ -4174,11 +4174,7 @@ update_window_actions (GtkWindow *window)
gtk_widget_action_set_enabled (GTK_WIDGET (window), "window.close",
priv->deletable);
- if (!update_csd_visibility (window))
- return;
-
- if (GTK_IS_HEADER_BAR (priv->title_box))
- _gtk_header_bar_update_window_buttons (GTK_HEADER_BAR (priv->title_box));
+ update_csd_visibility (window);
}
static GtkWidget *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]