Project

General

Profile

gtkdialog.c.diff

John Lindgren, April 23, 2014 00:22

View differences:

gtk/gtkdialog.c
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
}