| 273 |
273 |
}
|
| 274 |
274 |
|
| 275 |
275 |
static void
|
| 276 |
|
update_title (GObject *dialog,
|
| 277 |
|
GParamSpec *pspec,
|
| 278 |
|
GtkWidget *label)
|
| 279 |
|
{
|
| 280 |
|
const gchar *title;
|
| 281 |
|
|
| 282 |
|
title = gtk_window_get_title (GTK_WINDOW (dialog));
|
| 283 |
|
gtk_label_set_label (GTK_LABEL (label), title);
|
| 284 |
|
gtk_widget_set_visible (label, title && title[0]);
|
| 285 |
|
}
|
| 286 |
|
|
| 287 |
|
static void
|
| 288 |
276 |
apply_use_header_bar (GtkDialog *dialog)
|
| 289 |
277 |
{
|
| 290 |
278 |
GtkDialogPrivate *priv = dialog->priv;
|
| 291 |
279 |
|
| 292 |
280 |
gtk_widget_set_visible (priv->action_area, !priv->use_header_bar);
|
| 293 |
281 |
gtk_widget_set_visible (priv->headerbar, priv->use_header_bar);
|
| 294 |
|
if (!priv->use_header_bar)
|
| 295 |
|
{
|
| 296 |
|
GtkWidget *box = NULL;
|
| 297 |
|
|
| 298 |
|
if (gtk_window_get_type_hint (GTK_WINDOW (dialog)) == GDK_WINDOW_TYPE_HINT_DIALOG)
|
| 299 |
|
{
|
| 300 |
|
GtkWidget *label;
|
| 301 |
|
|
| 302 |
|
box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
|
| 303 |
|
gtk_widget_show (box);
|
| 304 |
|
gtk_widget_set_size_request (box, -1, 16);
|
| 305 |
|
label = gtk_label_new ("");
|
| 306 |
|
gtk_widget_set_margin_top (label, 6);
|
| 307 |
|
gtk_widget_set_margin_bottom (label, 6);
|
| 308 |
|
gtk_style_context_add_class (gtk_widget_get_style_context (label), "title");
|
| 309 |
|
gtk_box_set_center_widget (GTK_BOX (box), label);
|
| 310 |
|
g_signal_connect_object (dialog, "notify::title", G_CALLBACK (update_title), label, 0);
|
| 311 |
|
}
|
| 312 |
282 |
|
| 313 |
|
gtk_window_set_titlebar (GTK_WINDOW (dialog), box);
|
| 314 |
|
}
|
|
283 |
if (!priv->use_header_bar)
|
|
284 |
gtk_window_set_titlebar (GTK_WINDOW (dialog), NULL);
|
| 315 |
285 |
if (priv->use_header_bar)
|
| 316 |
286 |
g_signal_connect (priv->action_area, "add", G_CALLBACK (add_cb), dialog);
|
| 317 |
287 |
}
|