Matthias Clasen
76810e110b
gtk-builder-tool: Don't break GtkHBox and GtkVBox
...
These classes have different defaults for ::expand than GtkBox,
which is not reflected in the declared default, so we have to
blacklist it.
2015-09-14 11:15:12 -04:00
Alexander Larsson
68e50d20a7
widget: Call size_allocate vfunc directly when possible
...
This avoids all the overhead of signal emissions when it is not used.
2015-09-14 15:05:37 +02:00
Alexander Larsson
cdd951e927
draw: call vfunc rather then emit signal for the common case
...
This avoids a lot of overhead in the common case where a signal
is not connected and we're just using the class vfunc (which is true
for all in-libgtk widgets). Additionally it makes backtraces in
debuggers and profiles much much nicer to look at.
https://bugzilla.gnome.org/show_bug.cgi?id=754986
2015-09-14 13:18:56 +02:00
Alexander Larsson
d5f1754981
gtk: Stop setting GDK_EXPOSURE_MASK on random widgets
...
These days exposure happens only on the native windows (generally the
toplevel window) and is propagated down recursively. The expose event
is only useful for backwards compat, and in fact, for double buffered
widgets we totally ignore the event (and non-double buffering breaks
on wayland).
So, by not setting the mask we avoid emitting these events and then
later ignoring them.
We still keep it on eventbox, fixed and layout as these are used
in weird ways that want backwards compat.
2015-09-14 11:01:13 +02:00
Matthias Clasen
b9322433d3
Update all ui files again
...
Replace translatable="1" by translatable="yes" so
xgettext stays happy and extracts the strings.
2015-09-13 23:26:16 -04:00
Matthias Clasen
fda5b4ce4c
builder-tool: Don't simplify translatable="yes"
...
It turns out that xgettext does not understand translatable="1",
so don't make gtk-builder-tool produce this, even though
GtkBuilder can parse it just fine.
https://bugzilla.gnome.org/show_bug.cgi?id=754928
2015-09-13 23:24:05 -04:00
Matthias Clasen
0db331d244
file chooser: make rows with popovers visible
...
Without this, the popovers are just dangling in the middle of
nowhere.
https://bugzilla.gnome.org/show_bug.cgi?id=754411
2015-09-13 22:53:42 -04:00
Christian Hergert
6f10fa1f40
pixelcache: squash warnings introduced by previous commits
2015-09-13 13:41:19 -07:00
Christian Hergert
a3605bc557
textview: give pixelcache access to style context
...
This changes textview to share the style context with the pixelcache.
Doing so allows pixel cache to optimize the surface creation and use
a CAIRO_CONTENT_COLOR instead of CAIRO_CONTENT_COLOR_ALPHA when
appropriate.
https://bugzilla.gnome.org/show_bug.cgi?id=754658
2015-09-13 13:41:19 -07:00
Christian Hergert
7c1ce9f3ad
viewport: share style context with pixelcache
...
This allows the pixel cache to opportunistically use CAIRO_CONTENT_COLOR
instead of CAIRO_CONTENT_COLOR_ALPHA during surface creation.
https://bugzilla.gnome.org/show_bug.cgi?id=754658
2015-09-13 13:41:19 -07:00
Christian Hergert
d7eb90779f
pixelcache: use GtkStyleContext to determine cairo_content_t for surface
...
We can take a fast path if the background for a widget is opaque by using
a CAIRO_CONTENT_COLOR instead of a CAIRO_CONTENT_COLOR_ALPHA surface. Most
blit'ing backends have a fast path for this, including Pixman and Quartz.
https://bugzilla.gnome.org/show_bug.cgi?id=754658
2015-09-13 13:41:19 -07:00
Christian Hergert
c1691a4964
stylecontext: add opaque background helper
...
This new private API, _gtk_style_context_is_background_opaque(), is meant to
be used by internal Gtk+ wigets to optimize fast paths for cases where
applicable. One such use would be to use a CAIRO_CONTENT_COLOR surface
instead of CAIRO_CONTENT_COLOR_ALPHA.
https://bugzilla.gnome.org/show_bug.cgi?id=754658
2015-09-13 13:41:19 -07:00
Matthias Clasen
0175cd8ae7
places sidebar: keep open variants sensitive
...
Add a separate action for "Open in Tab" and "Open in new window"
so we can keep them enabled when we disable "Open" for the selected
row.
https://bugzilla.gnome.org/show_bug.cgi?id=754410
2015-09-13 12:44:17 -04:00
Matthias Clasen
8a540ea0d0
Drop GtkWidgetAuxInfo
...
Merge it into GtkWidgetPrivate. In my measurements, about half
of all widgets have a non-default auxinfo struct, and we use this
information in size allocation, so it is nice to avoid the gdata
overhead.
2015-09-13 00:12:04 -04:00
Matthias Clasen
b355b07c10
Move font map to qdata
...
This is very rarely used, lets not reserve space for it
in every widget.
2015-09-12 21:11:54 -04:00
Matthias Clasen
70a2281959
Move font options to gdata
...
This is very rarely used, lets not reserve space for it in
every widget.
2015-09-12 21:11:54 -04:00
Matthias Clasen
b166582835
Move action muxer to gdata
...
Most widgets don't have their own, and we don't access them
very frequently.
2015-09-12 21:11:54 -04:00
Matthias Clasen
e4de412fd3
Move widget paths to gdata
...
We only use widget paths for a few widgets nowadays (notebook,
treeview, pathbar, combobox), so we can save some space by
not having this field in GtkWidgetPrivate.
2015-09-12 21:11:54 -04:00
Benjamin Otte
bf95c8462b
combobox: Stop using old styling code
...
Instead of get_path_for_child() use CSS nodes.
2015-09-13 01:54:03 +02:00
Matthias Clasen
75439cafb6
Move template support to qdata
...
The hash table is only accessed at creation and destruction time,
and many widgets don't use templates at all, so no need to have
this permanently occupying space.
2015-09-12 19:22:17 -04:00
Matthias Clasen
d8e1f1edf5
Pack GtkWidgetPrivate a bit better
...
This makes it shrink from 240 to 232 bytes.
2015-09-12 18:54:51 -04:00
Matthias Clasen
27db410fd5
Use NULL instead of g_direct_equal
...
GHashTable has built-in support for pointer comparison.
2015-09-12 18:48:17 -04:00
Matthias Clasen
f1414a125f
Move GtkWidgetAuxInfo struct to private headers
...
There's no API returning such a struct, it is entirely internal.
Therefore, don't expose it in public headers.
2015-09-12 18:36:32 -04:00
Benjamin Otte
51a1bc21af
Revert "Avoid type checking overhead for resize-mode"
...
This reverts commit 3eacfa88f2
.
Apart from the patch not being correct, we don't want to expose private
structures in header files if we can avoid it.
And this type-checking overhead is not an optimization that is even
measurable.
https://bugzilla.gnome.org/show_bug.cgi?id=754932
2015-09-12 21:27:24 +02:00
Matthias Clasen
29c799a1e7
Use g_object_get_qdata instead of g_object_get_data
...
This is less expensive.
2015-09-12 12:50:39 -04:00
Matthias Clasen
66f0bdee0a
Intern all signal names beforehand
...
This avoids pointless allocations
2015-09-12 12:50:39 -04:00
Matthias Clasen
c8dcb690aa
css node: Avoid a duplicate type check
2015-09-12 12:50:39 -04:00
Matthias Clasen
2a6a841db1
widget path: No need for atomic refcounting
...
We are all in one thread, anyway.
2015-09-12 12:50:39 -04:00
Matthias Clasen
9546ce798b
css value: No need for atomic refcounting
...
We are all in one thread anyway.
2015-09-12 12:50:38 -04:00
Matthias Clasen
fe1e2cbfad
css section: No need for atomic refcounting
...
We are all in one thread, anyway.
2015-09-12 12:50:38 -04:00
Matthias Clasen
3eacfa88f2
Avoid type checking overhead for resize-mode
2015-09-12 12:50:38 -04:00
Matthias Clasen
95cf550e15
window: Avoid unnecessary detours
...
Don't call gtk_widget_get_screen on a window - it only ends up
calling gtk_window_get_screen in the end, anyway.
2015-09-12 12:50:38 -04:00
Matthias Clasen
caa0ee3d25
Remove type check from gtk_widget_get_request_mode
2015-09-12 12:50:38 -04:00
Matthias Clasen
09e4f753fd
widget: Move _gtk_widget_peek_request_cache to private.h
2015-09-12 12:50:38 -04:00
Matthias Clasen
20c49b8837
css node declaration: Avoid optional out parameters
...
Always pass a pos to find_class, and avoid the if.
2015-09-12 12:50:37 -04:00
Matthias Clasen
29505af07f
css node declaration: Fix a typo
2015-09-12 12:50:37 -04:00
Matthias Clasen
bbeec3608f
css section: Replace g_return by gtk_internal_return
2015-09-12 11:29:46 -04:00
Matthias Clasen
a9b80a6391
style cascade: Replace g_return by gtk_internal_return
2015-09-12 11:29:37 -04:00
Matthias Clasen
60ccda0597
css lookup: Replace g_return by gtk_internal return
...
These functions are called in an inner loop in
gtk_css_style_provider_lookup.
2015-09-12 11:28:39 -04:00
Matthias Clasen
83d68ea107
css selector: Use a builtin to count bits
2015-09-12 11:24:43 -04:00
Matthias Clasen
a831f1fb11
css matcher: Avoid a redundant call
...
The sole caller passes an interned string, so we don't
need to call g_intern_string again.
2015-09-12 11:24:42 -04:00
Matthias Clasen
11d3582333
css selector: Take advantage of interned strings
...
We know these strings are interned, no need to use strcmp or
g_str_hash for hem.
2015-09-12 11:24:42 -04:00
Matthias Clasen
4654fa6efe
bitmask: Trivial formatting fix
2015-09-12 11:24:37 -04:00
Matthias Clasen
c86f0b1b23
bitmask: Optimize no-op resizes
...
Statistics for the gtk3-demo listbox example show that the
vast majority of calls to _gtk_allocated_bitmask_resize go
from a size of 2 to 2. Don't needlessly call realloc() in
this case.
2015-09-12 11:24:37 -04:00
Matthias Clasen
0957ba5220
bitmask: Optimize intersect
...
The functions was written in a way that would possibly
resize the mask twice, which is not necessary.
2015-09-12 11:24:37 -04:00
Matthias Clasen
a531633660
Run gtk-builder-tool simplify over all templates
2015-09-12 11:24:36 -04:00
Matthias Clasen
3c247f20ea
gtk-builder-tool: Canonicalize booleans
...
Always write booleans as '0' or '1'.
2015-09-12 11:24:36 -04:00
Matthias Clasen
4b92f0895a
builder: Minor tweak
2015-09-12 11:24:36 -04:00
Benjamin Otte
c6a5a12922
widgetpath: Implement using GtkCssNodeDeclaration
...
This removes a bunch of code but more importantly allows providing the
declaration in CSS matchers.
2015-09-12 05:27:35 +02:00
Benjamin Otte
610452dda8
cssnode: Move clear_classes() into the NodeDeclaration
...
The previous code was crashing when used as the returned classes array
would have been invalid after the first deletion. So if a 2nd class
would be deleted, invalid memory might have been referenced.
2015-09-12 05:27:35 +02:00
Garrett Regier
6118893a4e
stylecontext: Fix list_classes() after optimization
...
Otherwise a junk value is returned.
2015-09-11 09:48:38 -07:00
Garrett Regier
6d29c1db92
widgetpath: Remove bad function prototypes
2015-09-11 09:48:38 -07:00
Benjamin Otte
f92c861eec
iconcache: Guard deprecated gdk-pixbuf APIs
2015-09-11 18:33:05 +02:00
Garrett Regier
41b386cd6a
cssnode: Optimize listing of classes
...
Avoid creating the GList of strings when the GQuarks
will just be determined again. Instead have
gtk_style_context_list_classes() do it specifically.
2015-09-11 18:26:11 +02:00
Garrett Regier
44460cd720
container: Don't add classes twice
...
_gtk_widget_create_path() already adds the style classes.
2015-09-11 17:56:44 +02:00
Alberts Muktupāvels
4539804086
gtkplug.c: remove draw function, not needed
...
Background will be rendered by parent class - GtkWindow.
https://bugzilla.gnome.org/show_bug.cgi?id=754854
2015-09-11 17:56:44 +02:00
Jakub Steiner
3ffef0ca03
HighContrast: make sidebar list rows taller
...
sync with Adwaita
https://bugzilla.gnome.org/show_bug.cgi?id=754866
2015-09-11 12:40:48 +02:00
Ross Lagerwall
4993b02da8
GtkFileSystem: Add to the list of remote filesystems
...
Add afp and google-drive to the list of remote filesystems.
https://bugzilla.gnome.org/show_bug.cgi?id=754746
2015-09-10 21:46:36 +01:00
Timm Bäder
a6982cc76e
GtkWidget: Fix typo in #ifdef
...
It's ENABLE, not ENABEL. Also fix the corresponding #endif comments.
2015-09-10 11:47:34 +02:00
Timm Bäder
3900700479
GtkContainer: Fix paramter name in doc comment
2015-09-10 11:34:44 +02:00
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Lapo Calamandrei
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
Matthias Clasen
9da0aa5d40
Use G_ENABLE_CONSISTENCY_CHECKS for template finalization checks
2015-09-09 06:32:47 -04:00
Matthias Clasen
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
Matthias Clasen
c8072c89ba
style provider private: Use gtk_internal_return_if_fail
2015-09-09 06:32:47 -04:00
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
ff530ae321
Drop an unused warning
...
It has been ifzeroed for many, many years.
2015-09-09 06:32:46 -04:00
Matthias Clasen
6f2fcce494
Use a getter for widget direction
2015-09-09 06:32:46 -04:00
Matthias Clasen
b8e82a1548
settings: Reuse a value
...
We've already gotten the value type, use it.
2015-09-09 06:32:45 -04:00
Matthias Clasen
96d66a11cf
builder: Avoid some type-checking overhead
2015-09-09 06:32:45 -04:00
Lapo Calamandrei
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
Jakub Steiner
eef64df5f2
HighContrast: remove edge highlight
...
https://bugzilla.gnome.org/show_bug.cgi?id=754551
2015-09-08 17:24:19 +02:00
Matthias Clasen
f7c0fcd074
widget path: Use gtk_internal_return_if_fail
2015-09-08 08:07:34 -04:00
Matthias Clasen
38e5a805dc
css style property: Use gtk_internal_return_if_fail
2015-09-08 08:07:34 -04:00
Matthias Clasen
e7a266ad95
css color: Use gtk_internal_return_if_fail
2015-09-08 08:07:33 -04:00
Matthias Clasen
9cd302407f
allocated bitmask: Use gtk_internal_return_if_fail
2015-09-08 08:07:33 -04:00
Matthias Clasen
0368cbd256
window: Use internal more internal getters
2015-09-08 08:07:33 -04:00
Matthias Clasen
2255400db1
Trivial cleanup
2015-09-08 08:07:33 -04:00
Matthias Clasen
64573ea979
widget: Use g_param_spec_get_name_quark
2015-09-08 08:07:33 -04:00
Matthias Clasen
0bee97de5c
stack: Convert to gtk_container_child_notify_by_pspec
2015-09-08 08:07:33 -04:00
Matthias Clasen
838d5beff7
notebook: Convert to g_object_notify_by_pspec
2015-09-08 08:07:33 -04:00
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
e3025f2325
scrolled window: Convert to g_object_notify_by_pspec
2015-09-08 08:07:32 -04:00
Matthias Clasen
7cb53685cf
app chooser button: Convert to g_object_notify_by_pspec
2015-09-08 08:07:32 -04:00
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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
Matthias Clasen
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