Commit Graph

43824 Commits

Author SHA1 Message Date
cf0e087527 Optimize gtk_css_node_declaration_has_class
This function is getting called a lot. Statistics for the gtk3-demo
listbox example show most calls with 0-4 classes. Unrolling the cases
a bit brings the instruction count in callgrind from 93M to 52M.
2015-09-09 14:40:36 -04:00
59797754b4 More bit manipulation speedups
The same trick that was applied to _gtk_css_change_for_child in
the previous commit can be applied to _gtk_css_change_for_sibling
as well, and that is what this commit does.

With both functions converted, gtk_css_change_translate is no
longer needed and gets dropped.
2015-09-09 14:09:21 -04:00
d7dd6eccd5 Manipulate bits more efficiently
The function to translate GtkCssChange enum values to the PARENT
ones is called very frequently. This patch speeds it up tremendously.
The callgrind instruction count for this function in the listbox
demo goes from 108M to 7M.
2015-09-09 14:02:27 -04:00
a9481cb410 match_all: Only allocate an array when needed
My statistics show that more than half of all calls end up
with 0 matches, so we can avoid some overhead by not allocating
an array at all in this case.
2015-09-09 11:17:13 -04:00
2d29ae4159 Handle match_all returning NULL
This is in preparation for not allocating an array at all if there
are no matches.
2015-09-09 11:17:13 -04:00
117b50f8fb Optimize gtk_css_selector_match_all
We are dealing with really short lists here.
95% are < 10 matches, and the longest I've been able to record was 19.
So just do away with the hash table and do sorted insertion in
the array directly.
2015-09-09 11:17:13 -04:00
dbf85cc4db x11: Declare variable for the inner loop
Otherwise the outer loop control variable is messed up, and we end
up with uninitialized axes if there were any more valuators after
the XIKeyClass one.

This bug was sneakily introduced by fdb9a8e14, many thanks to
Carlos Soriano for helping spot the source of this bug.

https://bugzilla.gnome.org/show_bug.cgi?id=753431
2015-09-09 16:46:26 +02:00
f7894a7588 Adwaita: special case selection mode lists checks
...otherwise the special selection mode 40x40px checks are used
shrinked to 16x16.
See https://bugzilla.gnome.org/show_bug.cgi?id=754610
2015-09-09 16:37:49 +02:00
d52da39183 Update the gtk3-demo man page
We have options now !
2015-09-09 10:20:07 -04:00
23d7c3d435 gtk-demo:Add a --list option
This just shows the available examples and then exists.
2015-09-09 10:14:17 -04:00
bce8d771a2 gtk-demo: Make --autoquit a simple option
No real need to specify the amount of delay, just make this
a plain boolean.
2015-09-09 08:07:20 -04:00
9da0aa5d40 Use G_ENABLE_CONSISTENCY_CHECKS for template finalization checks 2015-09-09 06:32:47 -04:00
0e86278fcc css selector: Use the quarks we have
Unless I'm missing something, there is no reason to go from
quarks back to strings to implement hasing or comparison.
2015-09-09 06:32:47 -04:00
c8072c89ba style provider private: Use gtk_internal_return_if_fail 2015-09-09 06:32:47 -04:00
3526b08e01 Clean up debug features
Introduce a GTK_DEBUG_CHECK() macro and use it to check for
GTK_DEBUG flags everywhere. Also guard all such places by
2015-09-09 06:32:46 -04:00
1b15588732 widget: Use G_ENABLE_CONSISTENCY_CHECKS for invariants checking
The logic here is that G_ENABLE_DEBUG is for compiling out
debug spew that can be triggered at runtime with the GTK_DEBUG
environment variable, while G_ENABLE_CONSISTENCY_CHECKS is for
consistency checks that are applied unconditionally.
2015-09-09 06:32:46 -04:00
bf9a72976f size request: Redo the recursion checks
Use G_ENABLE_CONSISTENCY checks for the recursion checks
in gtksizerequest.c
2015-09-09 06:32:46 -04:00
f114d9c824 Introduce G_ENABLE_CONSISTENCY_CHECKS
Use a separate G_ENABLE_CONSISTENCY_CHECKS define to guard internal
consistency checks that are applied unconditionally if they are enabled,
such as the widget invariants checking. Interactive debug spew that can
be triggered at runtime with the GTK_DEBUG environment variable is still
guarded by the G_ENABLE_DEBUG define.

The mapping from enable-debug levels to defines is as follows:

yes:     G_ENABLE_DEBUG G_ENABLE_CONSISTENCY_CHECKS
minimum: G_ENABLE_DEBUG G_DISABLE_CAST_CHECKS
no:      G_DISABLE_CAST_CHECKS G_DISABLE_ASSERT G_DISABLE_CHECKS
2015-09-09 06:32:46 -04:00
f4b53d4b0c notebook: Drop use of G_DISABLE_CHECKS
Rewrite the one check that the G_DISABLE_CHECKS macro was used for
in terms of g_return_if_fail.
2015-09-09 06:32:46 -04:00
ff530ae321 Drop an unused warning
It has been ifzeroed for many, many years.
2015-09-09 06:32:46 -04:00
6f2fcce494 Use a getter for widget direction 2015-09-09 06:32:46 -04:00
b8e82a1548 settings: Reuse a value
We've already gotten the value type, use it.
2015-09-09 06:32:45 -04:00
96d66a11cf builder: Avoid some type-checking overhead 2015-09-09 06:32:45 -04:00
389ae3e022 settings: Avoid a redundant check
g_value_transform already returns whether it was successful
or not, so no need to call g_value_type_transformable beforehand.
2015-09-09 06:32:45 -04:00
17053e1f77 Updated po-properties French translation 2015-09-09 09:21:55 +02:00
50983101d4 Adwaita: set -GtkRange-trough-border: 0 for scrollbars
which fixes firefox scrollbar not being fittsy when maximixed.
2015-09-08 22:12:12 +02:00
eef64df5f2 HighContrast: remove edge highlight
https://bugzilla.gnome.org/show_bug.cgi?id=754551
2015-09-08 17:24:19 +02:00
f7c0fcd074 widget path: Use gtk_internal_return_if_fail 2015-09-08 08:07:34 -04:00
38e5a805dc css style property: Use gtk_internal_return_if_fail 2015-09-08 08:07:34 -04:00
e7a266ad95 css color: Use gtk_internal_return_if_fail 2015-09-08 08:07:33 -04:00
9cd302407f allocated bitmask: Use gtk_internal_return_if_fail 2015-09-08 08:07:33 -04:00
0368cbd256 window: Use internal more internal getters 2015-09-08 08:07:33 -04:00
2255400db1 Trivial cleanup 2015-09-08 08:07:33 -04:00
64573ea979 widget: Use g_param_spec_get_name_quark 2015-09-08 08:07:33 -04:00
0bee97de5c stack: Convert to gtk_container_child_notify_by_pspec 2015-09-08 08:07:33 -04:00
838d5beff7 notebook: Convert to g_object_notify_by_pspec 2015-09-08 08:07:33 -04:00
2580c050d8 grid: Convert to gtk_container_child_notify_by_pspec
For the same reasons as g_object_child_notify_by_pspec.
2015-09-08 08:07:32 -04:00
1e4369e8ef box: Convert to gtk_container_child_notify_by_pspec
For the same reasons as g_object_child_notify_by_pspec.
2015-09-08 08:07:32 -04:00
93f8f12e39 Add some more child property API
Add gtk_container_install_child_properties and
gtk_container_child_notify_by_pspec to mirror te corresponding
GObject APIs.
2015-09-08 08:07:32 -04:00
e3025f2325 scrolled window: Convert to g_object_notify_by_pspec 2015-09-08 08:07:32 -04:00
7cb53685cf app chooser button: Convert to g_object_notify_by_pspec 2015-09-08 08:07:32 -04:00
4785f460d3 settings: Convert more fully to g_object_notify_by_pspec
It turns out that we always have the pspec at hand already.
2015-09-08 08:07:32 -04:00
4e8b841fd2 Updated Norwegian bokmål translation. 2015-09-07 20:41:48 +02:00
97a29ab8c4 builder: Simplify _gtk_builder_boolean_from_string
We can do this without calling strlen() or allocating memory.
2015-09-07 12:54:16 -04:00
3d01f29bd9 builder: Move a function
Move _gtk_builder_boolean_from_string in the same source file
as the other _from_functions.
2015-09-07 12:43:19 -04:00
20079a9960 builder: Minor refactoring
Keep the GString in PropertyInfo around, instead of throwing it
away and just keeping the char*.
2015-09-07 12:25:29 -04:00
15b9feda22 widget: Add more inline getters
Add a getter for state flags, and use it where appropriate.
2015-09-07 12:23:09 -04:00
9b494df91e settings: Avoid one case of g_object_notify
We already have the GParamSpec in hands, lets just use it instead
of looking it up again.
2015-09-07 11:36:37 -04:00
7cd7257a07 Avoid a string copy
We have an api to create a quark from a static string, lets use it.
2015-09-07 11:36:36 -04:00
e1ecdd3ef5 treeview: Donate a priv variable to gtk_tree_view_init() 2015-09-07 14:34:02 +02:00