2008-11-25 Alberto Garcia <agarcia@igalia.com>
[hildon] / src / hildon-font-selection-dialog.c
index eb644f8..6d77321 100644 (file)
  * size, style, etc. Users can also preview text in the selected font.
  */
 
+#undef                                          HILDON_DISABLE_DEPRECATED
+
 #ifdef                                          HAVE_CONFIG_H
 #include                                        <config.h>
 #endif
 
+#include                                        <libintl.h>
 #include                                        <stdlib.h>
 #include                                        <string.h>
-#include                                        <gtk/gtkstock.h>
-#include                                        <gtk/gtkcombobox.h>
-#include                                        <gtk/gtktogglebutton.h>
-#include                                        <gtk/gtkcheckbutton.h>
-#include                                        <gtk/gtklabel.h>
-#include                                        <gtk/gtkvbox.h>
-#include                                        <gtk/gtkliststore.h>
-#include                                        <gtk/gtknotebook.h>
-#include                                        <gtk/gtk.h>
+
 #include                                        <glib.h>
 #include                                        <gdk/gdkkeysyms.h>
+
 #include                                        "hildon-font-selection-dialog.h"
 #include                                        "hildon-caption.h"
 #include                                        "hildon-color-button.h"
-#include                                        <libintl.h>
 #include                                        "hildon-font-selection-dialog-private.h"
 
 /* These are what we use as the standard font sizes, for the size list */
@@ -773,10 +768,6 @@ hildon_font_selection_dialog_init               (HildonFontSelectionDialog *font
             fontseldiag);
     gtk_widget_show(preview_button);
 
-    gtk_dialog_add_button (GTK_DIALOG (fontseldiag),
-            _("ecdg_bd_font_dialog_cancel"),
-            GTK_RESPONSE_CANCEL);
-
     /*Set default preview text*/
     priv->preview_text = g_strdup (_("ecdg_fi_preview_font_preview_text"));
 
@@ -889,6 +880,8 @@ hildon_font_selection_dialog_construct_notebook (HildonFontSelectionDialog *font
                 priv->cbx_positioning, NULL,
                 HILDON_CAPTION_OPTIONAL);
 
+    g_object_unref (group);
+
     gtk_box_pack_start (GTK_BOX (vbox_tab[2]), caption_control, FALSE, FALSE, 0);
 
     /* Populate notebook */
@@ -1161,10 +1154,6 @@ hildon_font_selection_dialog_show_preview       (HildonFontSelectionDialog *font
 
     str = NULL;
 
-    gtk_container_add (GTK_CONTAINER (GTK_DIALOG(preview_dialog)->vbox),
-            preview_label);
-
-
     /* set keypress handler (ESC hardkey) */
     g_signal_connect (G_OBJECT (preview_dialog), "key-press-event",
             G_CALLBACK(hildon_font_selection_dialog_preview_key_press),
@@ -1180,13 +1169,16 @@ hildon_font_selection_dialog_show_preview       (HildonFontSelectionDialog *font
             &family_set, "size", &size, "size-set", &size_set,
             NULL);
 
-    /* FIXME: This is a slightly ugly hack to force the width of the window so that
-     * the whole text fits with various font sizes. It's being done in such a way, 
-     * because of some GtkLabel wrapping issues and other mysterious bugs related to 
-     * truncating ellipsizing. Needs a rethink in future */
+    /* A smallish hack to add scrollbar when font size is really big */
 
-    gint dialog_width = (size_set && size > 24) ? 600 : 500; 
-    gtk_window_set_default_size (GTK_WINDOW (preview_dialog), dialog_width, -1);
+    if (size_set && size > 24) {
+        GtkScrolledWindow *scrolled = GTK_SCROLLED_WINDOW (gtk_scrolled_window_new (NULL, NULL));
+        gtk_scrolled_window_set_policy (scrolled, GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+        gtk_scrolled_window_add_with_viewport (scrolled, GTK_WIDGET (preview_label));
+        gtk_container_add (GTK_CONTAINER (GTK_DIALOG(preview_dialog)->vbox), GTK_WIDGET (scrolled));
+        gtk_widget_set_size_request (GTK_WIDGET (scrolled), -1, 400);
+    } else 
+        gtk_container_add (GTK_CONTAINER (GTK_DIALOG(preview_dialog)->vbox), GTK_WIDGET (preview_label));
 
     /* make reference text to have the same fontface and size */
     if (family_set)
@@ -1214,6 +1206,12 @@ hildon_font_selection_dialog_show_preview       (HildonFontSelectionDialog *font
             GTK_WINDOW (fontsel));
 
     gtk_widget_show_all (preview_dialog);
+    gtk_dialog_set_default_response (GTK_DIALOG (preview_dialog), GTK_RESPONSE_OK);
+    
+    GtkBox *action_area = (GtkBox *) GTK_DIALOG (preview_dialog)->action_area;
+    GtkWidget *button = ((GtkBoxChild *) ((GSList *) action_area->children)->data)->widget;
+    gtk_widget_grab_focus (button);
+
     gtk_dialog_run (GTK_DIALOG (preview_dialog));
     gtk_widget_destroy (preview_dialog);
 }