summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2020-05-20 10:11:37 +0200
committerTimm Bäder <mail@baedert.org>2020-05-20 18:12:22 +0200
commit9cc6ddf80d026d9204d7ab0b67f6ebcbea6391ab (patch)
tree4944f933f31cdda130a2af4723db3d7c3da65c2c
parentee9d99cba3803f926ffed1733d9bd282ade6f84e (diff)
downloadgtk+-9cc6ddf80d026d9204d7ab0b67f6ebcbea6391ab.tar.gz
window: Create default titlebar directly in realize
Instead of having two functions that are only called from one place but look like they can be called from anywhere.
-rw-r--r--gtk/gtkwindow.c55
1 files changed, 21 insertions, 34 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 944a1e5d2b..32d31a5ee5 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -3762,17 +3762,6 @@ update_window_actions (GtkWindow *window)
update_csd_visibility (window);
}
-static GtkWidget *
-create_titlebar (GtkWindow *window)
-{
- GtkWidget *titlebar = gtk_header_bar_new ();
- gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (titlebar), TRUE);
- gtk_widget_add_css_class (titlebar, GTK_STYLE_CLASS_TITLEBAR);
- gtk_widget_add_css_class (titlebar, "default-decoration");
-
- return titlebar;
-}
-
void
_gtk_window_request_csd (GtkWindow *window)
{
@@ -3818,28 +3807,6 @@ gtk_window_should_use_csd (GtkWindow *window)
}
static void
-create_decoration (GtkWidget *widget)
-{
- GtkWindow *window = GTK_WINDOW (widget);
- GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
-
- priv->use_client_shadow = gtk_window_supports_client_shadow (window);
- if (!priv->use_client_shadow)
- return;
-
- gtk_window_enable_csd (window);
-
- if (priv->title_box == NULL)
- {
- priv->titlebar = create_titlebar (window);
- gtk_widget_set_parent (priv->titlebar, widget);
- priv->title_box = priv->titlebar;
- }
-
- update_window_actions (window);
-}
-
-static void
gtk_window_show (GtkWidget *widget)
{
GtkWindow *window = GTK_WINDOW (widget);
@@ -4331,8 +4298,28 @@ gtk_window_realize (GtkWidget *widget)
GdkSurface *surface;
GtkBorder shadow;
+ /* Create default title bar */
if (!priv->client_decorated && gtk_window_should_use_csd (window))
- create_decoration (widget);
+ {
+ priv->use_client_shadow = gtk_window_supports_client_shadow (window);
+ if (priv->use_client_shadow)
+ {
+ gtk_window_enable_csd (window);
+
+ if (priv->title_box == NULL)
+ {
+ priv->titlebar = gtk_header_bar_new ();
+ gtk_header_bar_set_show_title_buttons (GTK_HEADER_BAR (priv->titlebar), TRUE);
+ gtk_widget_add_css_class (priv->titlebar, GTK_STYLE_CLASS_TITLEBAR);
+ gtk_widget_add_css_class (priv->titlebar, "default-decoration");
+
+ gtk_widget_set_parent (priv->titlebar, widget);
+ priv->title_box = priv->titlebar;
+ }
+
+ update_window_actions (window);
+ }
+ }
get_shadow_width (window, &shadow);