#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 */
GParamSpec *pspec)
{
gint i;
- GdkColor *color = NULL;
+ GdkColor color;
HildonFontSelectionDialogPrivate *priv =
HILDON_FONT_SELECTION_DIALOG_GET_PRIVATE(object);
break;
case PROP_COLOR:
- color = g_new (GdkColor, 1);
hildon_color_button_get_color
- (HILDON_COLOR_BUTTON (priv->font_color_button), color);
- g_value_set_boxed (value, (gconstpointer) color);
- if(color != NULL)
- gdk_color_free (color);
+ (HILDON_COLOR_BUTTON (priv->font_color_button), &color);
+ g_value_set_boxed (value, (gconstpointer) &color);
break;
case PROP_COLOR_SET:
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 */
preview_label = gtk_label_new (str);
gtk_label_set_line_wrap (GTK_LABEL(preview_label), TRUE);
- g_free (str);
- str = NULL;
-
- gtk_container_add (GTK_CONTAINER (GTK_DIALOG(preview_dialog)->vbox),
- preview_label);
+ if (str)
+ g_free (str);
+ str = NULL;
/* set keypress handler (ESC hardkey) */
g_signal_connect (G_OBJECT (preview_dialog), "key-press-event",
G_CALLBACK(hildon_font_selection_dialog_preview_key_press),
NULL);
- /*Set the font*/
+ /* Set the font */
list = (show_ref) ? hildon_font_selection_dialog_create_attrlist (fontsel,
strlen (_("ecdg_fi_preview_font_preview_reference")),
strlen (priv->preview_text)) :
&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)
attr = pango_attr_family_new (str);
add_preview_text_attr (list, attr, 0, strlen (_("ecdg_fi_preview_font_preview_reference")));
}
- g_free (str);
+ if (str != NULL)
+ g_free (str);
- /*size*/
+ str = NULL;
+
+ /* size */
if (size_set)
{
attr = pango_attr_size_new (size * PANGO_SCALE);
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);
}