diff options
author | Kristian Rietveld <kris@imendio.com> | 2006-11-01 19:15:54 +0000 |
---|---|---|
committer | Kristian Rietveld <kristian@src.gnome.org> | 2006-11-01 19:15:54 +0000 |
commit | be3e5ab9a6d8170ba557343c4503e0f0d1ff0e85 (patch) | |
tree | 45b79b273b63e79d4ef86d976f3aa55214ae3e7c /gtk/gtkcombobox.c | |
parent | 5f72cdfe592295181a328cc7cf29d1ae14e52d0b (diff) | |
download | gdk-pixbuf-be3e5ab9a6d8170ba557343c4503e0f0d1ff0e85.tar.gz |
add arrow-size property to control the minimum size of the arrow, have the
2006-11-01 Kristian Rietveld <kris@imendio.com>
* gtk/gtkcombobox.c (gtk_combo_box_class_init),
(gtk_combo_box_size_request): add arrow-size property to control
the minimum size of the arrow, have the arrow scale up with the
font by default. (#357950).
Diffstat (limited to 'gtk/gtkcombobox.c')
-rw-r--r-- | gtk/gtkcombobox.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/gtk/gtkcombobox.c b/gtk/gtkcombobox.c index 28acf364a..1cf287fe0 100644 --- a/gtk/gtkcombobox.c +++ b/gtk/gtkcombobox.c @@ -756,6 +756,25 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass) FALSE, GTK_PARAM_READABLE)); + /** + * GtkComboBox:arrow-size: + * + * Sets the minimum size of the arrow in the combo box. Note + * that the arrow size is coupled to the font size, so in case + * a larger font is used, the arrow will be larger than set + * by arrow size. + * + * Since: 2.12 + */ + gtk_widget_class_install_style_property (widget_class, + g_param_spec_int ("arrow-size", + P_("Arrow Size"), + P_("The minimum size of the arrow in the combo box"), + 0, + G_MAXINT, + 15, + GTK_PARAM_READABLE)); + g_type_class_add_private (object_class, sizeof (GtkComboBoxPrivate)); } @@ -1897,7 +1916,12 @@ gtk_combo_box_size_request (GtkWidget *widget, { gint width, height; gint focus_width, focus_pad; + gint font_size; + gint arrow_size; GtkRequisition bin_req; + PangoContext *context; + PangoFontMetrics *metrics; + PangoFontDescription *font_desc; GtkComboBox *combo_box = GTK_COMBO_BOX (widget); @@ -1910,8 +1934,21 @@ gtk_combo_box_size_request (GtkWidget *widget, gtk_widget_style_get (GTK_WIDGET (widget), "focus-line-width", &focus_width, "focus-padding", &focus_pad, + "arrow-size", &arrow_size, NULL); + font_desc = GTK_BIN (widget)->child->style->font_desc; + context = gtk_widget_get_pango_context (widget); + metrics = pango_context_get_metrics (context, font_desc, + pango_context_get_language (context)); + font_size = PANGO_PIXELS (pango_font_metrics_get_ascent (metrics) + + pango_font_metrics_get_descent (metrics)); + pango_font_metrics_unref (metrics); + + arrow_size = MAX (arrow_size, font_size); + + gtk_widget_set_size_request (combo_box->priv->arrow, arrow_size, arrow_size); + if (!combo_box->priv->tree_view) { /* menu mode */ |