summaryrefslogtreecommitdiff
path: root/gtk/gtkbuiltinicon.c
Commit message (Collapse)AuthorAgeFilesLines
* builtinicon: avoid calculating font-metrics in vast majority of casesChristian Hergert2016-04-251-16/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We perform lots of gadget allocations that require allocating a GtkBuiltinIcon. One notable example is the scrollbar for a scrolled window. In the process of doing this, we often calculate baseline information that isn't necessary. With how much this code path gets exercised, its worth catching the result for the common case, which is that the font-description has not changed and we are using the default language the application was started with. This simply caches the previous result and verifies that we can reuse it with pango_font_description_hash() and a simple language check. Numbers below are scrolling through a textview with GDK_KEY_Down. Before: SELF CUMULATIVE FUNCTION [ 0.08%] [ 9.26%] gtk_builtin_icon_get_preferred_size [ 0.01%] [ 8.82%] pango_context_get_metrics [ 0.02%] [ 0.16%] gtk_widget_get_pango_context [ 0.06%] [ 0.06%] pango_context_get_language [ 0.01%] [ 0.02%] g_type_check_instance_cast [ 0.02%] [ 0.02%] strlen [ 0.02%] [ 0.02%] pango_context_get_font_description [ 0.02%] [ 0.02%] g_list_foreach [ 0.01%] [ 0.01%] gtk_css_style_get_value [ 0.01%] [ 0.01%] itemize_with_font [ 0.01%] [ 0.01%] pango_context_get_type [ 0.01%] [ 0.01%] get_base_metrics [ 0.00%] [ 0.01%] pango_font_metrics_unref [ 0.01%] [ 0.01%] g_list_free [ 0.01%] [ 0.01%] gtk_builtin_icon_get_type After: SELF CUMULATIVE FUNCTION [ 0.08%] [ 0.18%] gtk_builtin_icon_get_preferred_size [ 0.02%] [ 0.02%] pango_font_description_hash [ 0.00%] [ 0.02%] gtk_widget_get_pango_context [ 0.00%] [ 0.02%] g_object_get_qdata [ 0.00%] [ 0.02%] g_datalist_id_get_data [ 0.02%] [ 0.02%] gtk_builtin_icon_get_type [ 0.01%] [ 0.01%] pango_context_get_font_description [ 0.00%] [ 0.01%] - - kernel - - [ 0.01%] [ 0.01%] pango_context_get_language [ 0.00%] [ 0.01%] gtk_css_style_get_value [ 0.00%] [ 0.01%] gtk_css_gadget_get_style https://bugzilla.gnome.org/show_bug.cgi?id=765486
* builtin icon: set a baselineMatthias Clasen2016-01-171-8/+27
| | | | | | | | Most uses of builtin icons (check and radio buttons, expanders, etc) are placed next to labels, so they should be properly positioned wrt to the baseline. Lacking anything better, give the builtin icons a baseline that places the center of the icon at the strikethrough position.
* builtin icon: Don't save/restore cairo stateMatthias Clasen2016-01-131-2/+0
| | | | | | The reason why this was introduced is now handled in gtk_css_stylke_render_icon since commit 0138af9f9684c0ec436b37e5962e9f82607d3ff8.
* Add some docs to GtkBuiltinIconMatthias Clasen2015-12-221-0/+18
|
* gtk/gtkbuiltinicon.c: Fix buildChun-wei Fan2015-12-221-1/+1
| | | | | | The gtk_builtin_icon_get_default_size_property returns a const char *, in a way such that some compilers insist that something that is of a pointer value be returned, so fix that by replacing 0 with NULL.
* builtinicon: save/restore cairo context when renderingCosimo Cecchi2015-12-191-0/+2
|
* checkbutton: Use a builtin iconBenjamin Otte2015-12-161-6/+66
| | | | | Also, add support to uiltin icons to look up the default size from a style property.
* builtinicon: Change the way size is handledBenjamin Otte2015-12-161-0/+14
| | | | | | Make min-width/height have preference over the set default size. This allows shrinking the widget. The default size is only used if min-width is not set (or explicitly set to 0.
* gadget: Add builtin icon gadgetBenjamin Otte2015-12-161-0/+203
This is to be used in all the places where we now call gtk_render_activity()/option()/check() etc that in turn call the icon render function.