summaryrefslogtreecommitdiff
path: root/gtk/gtkcombobox.c
diff options
context:
space:
mode:
authorKristian Rietveld <kris@imendio.com>2006-11-01 19:15:54 +0000
committerKristian Rietveld <kristian@src.gnome.org>2006-11-01 19:15:54 +0000
commitbe3e5ab9a6d8170ba557343c4503e0f0d1ff0e85 (patch)
tree45b79b273b63e79d4ef86d976f3aa55214ae3e7c /gtk/gtkcombobox.c
parent5f72cdfe592295181a328cc7cf29d1ae14e52d0b (diff)
downloadgdk-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.c37
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 */