Commit Graph

43913 Commits

Author SHA1 Message Date
Jonas Ådahl
7c4c8b90f0 wayland: Make subsurface desynchronized after first parent surface frame
Initially the subsurface will be in synchronized mode and we will leave
it like this until the first time the parent surface has been committed.
The reason for this is because the subsurface position will be applied
as part of the parent surface state, and we need to synchronize the
initial position with the initial frame, so that we don't accidentally
draw the subsurface at the default position (0, 0) which would happen in
desynchronized mode if the subsurface content is committed before the
next parent surface commit.

https://bugzilla.gnome.org/show_bug.cgi?id=754839
2015-09-15 08:11:47 +08:00
Benjamin Otte
07a574dddd window: Use gtk_widget_queue_resize()
_gtk_container_queue_resize() is a private function and probably
shouldn't have even been used in 1999 when this call was originally
added.
2015-09-14 23:36:58 +02:00
Benjamin Otte
bcc0a54383 inspector: Store the parent for the object tree
This allows selecting newly added random objects.

https://bugzilla.gnome.org/show_bug.cgi?id=754987
2015-09-14 23:36:37 +02:00
Fran Dieguez
018856df23 Updated Galician translations 2015-09-14 22:58:46 +02:00
Christian Hergert
1c8760c5fa gdkwindow: avoid multiple walking of children list
This counts the number of children and fetches the last GList
node at the same time.
2015-09-14 12:40:12 -07:00
Matthias Clasen
7d3ad43841 Revert "print backend: Remove an unneeded variable"
This reverts commit 9ebebd48b0.

This change broke the templates testcase, and I don't have time
to poke at why, right now.
2015-09-14 15:20:58 -04:00
Matthias Clasen
afa60da553 Fix a copy-paste error
We were notifying can-focus when can-default changes.
Unit tests save the day.
2015-09-14 15:20:58 -04:00
Muhammet Kara
5f0dcef29e Updated Turkish translation 2015-09-14 17:59:30 +00:00
Carlos Garnacho
e1694a719f scrolledwindow: Cancel kinetic/overshoot animation on captured scroll events
This ensures the animation is cancelled if the child widget happens to
GDK_EVENT_STOP scroll events.

https://bugzilla.gnome.org/show_bug.cgi?id=745315
2015-09-14 19:31:56 +02:00
Matthias Clasen
15411aa032 entry: Drop the Ctrl-K keybinding
This interferes with a well-loved firefox shortcut, and we
are more interested in a gtk3 firefox than in legacy keybindings.
2015-09-14 11:49:15 -04:00
Carlos Garnacho
259611a87c gtkwidget: Do not listen to notifications from nonexistent properties
The GtkEventController event mask is private, and set early by GtkGesture
implementations. Being this private data, there is no corresponding
property, so this code is a no-op, there is just no need to listen to
changes there.
2015-09-14 17:39:41 +02:00
Carlos Garnacho
13873d2c50 gtkwidget: Ensure unrealization during event dispatching cancels gestures
We use to rely on grab broken events for most of the event sequence
lifetime, this breaks though on GDK_BUTTON_RELEASE/GDK_TOUCH_END, as there's
no longer a grab at that time.

For these cases (and all others where there's destroy/unrealize calls
involved during event dispatching), catch this on the late
WIDGET_REALIZED_FOR_EVENT calls on widget event handling functions.

https://bugzilla.gnome.org/show_bug.cgi?id=754098
2015-09-14 17:38:27 +02:00
Carlos Garnacho
0dae974b96 gtkwidget: refactor code into separate function
This "cancel sequence across widget hierarchy" code will be useful
in other places, so take it out to a separate function.

https://bugzilla.gnome.org/show_bug.cgi?id=754098
2015-09-14 17:38:27 +02:00
Matthias Clasen
1c4a7bd552 Revert "tool button: Use G_DEFINE_TYPE"
This reverts commit 4e56dfad0e.

It turns out that GtkToolButton is playing games with the class
pointer inside instance_init, so leave it alone.
2015-09-14 11:16:34 -04:00
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
Matthias Clasen
75057db990 gtk-demo: Fix builder example
This example is still using a GtkVBox, and it happened to be broken
by gtk-builder-tool simplify.
2015-09-14 11:15:12 -04:00
Fran Dieguez
f9c37cb887 Updated Galician translations 2015-09-14 16:47:51 +02:00
Fran Dieguez
d547b86773 Updated Galician translations 2015-09-14 16:44:48 +02: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
Alexander Larsson
eafedfbaf8 gdkwindow: Avoid list allocation and object refs during repaint
There is no need to ref the windows we're ignoring, so collect and ref
only the affected child windows. Also, use a on-stack array rather
than allocating a linked list.

Also, we don't need to ref during the event emissions too, as we
already hold a ref.

https://bugzilla.gnome.org/show_bug.cgi?id=754687
2015-09-14 11:01:13 +02:00
Pedro Albuquerque
d9c0706305 Updated Portuguese translation 2015-09-14 07:31:34 +00:00
Piotr Drąg
136e3877b9 Updated Polish translation 2015-09-14 09:30:30 +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
b64a0b9233 wayland: Avoid a crash with GtkGLArea
We must not call gdk_wayland_window_attach_image when
using GL for drawing, this leads to a crash.

https://bugzilla.gnome.org/show_bug.cgi?id=754770
2015-09-13 15:56:30 -04:00
Alexander Larsson
ea294fd92c gdkwindow: Store children list nodes in GdkWindow structure
This avoids a bunch of allocations, and additionally it has better
cache behaviour, as we don't follow pointers to the separate GList
node memory areas during traversal.

From Christian Hergert:

  This machine is a Retina mac book pro so I've been working on getting
  GtkTextView (GtkPixelCache) up to our performance level on
  X11/Wayland. I'm seeing a jump from about 43 FPS to about 50 FPS.

https://bugzilla.gnome.org/show_bug.cgi?id=754687
2015-09-13 21:48:55 +02: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
Dušan Kazik
2b3a116ef7 Updated Slovak translation 2015-09-13 08:58:00 +00:00
Dušan Kazik
4bcc49c9ef Updated Slovak translation 2015-09-13 08:50:28 +00: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
Piotr Drąg
286e8eec3a Updated POTFILES.in 2015-09-12 19:42:41 +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