Commit Graph

27141 Commits

Author SHA1 Message Date
Emmanuele Bassi
137ff8ede7 box: Port from immediate to deferred rendering
Drop the ::draw() vfunc implementation in favour of the
::get_render_node() vfunc.
2016-10-18 11:49:10 +01:00
Emmanuele Bassi
e5dace2d51 Integrate CSS gadget with GSK render nodes
First stab at an internal API that generates render nodes when drawing a
CSS gadget.
2016-10-18 11:49:10 +01:00
Emmanuele Bassi
bfad9fe4ee gtk: Update the coordinates when propagating render nodes
Just like gtk_container_propagate_draw() does for the immediate mode
rendering.
2016-10-18 11:49:10 +01:00
Emmanuele Bassi
1ab1fd4391 Use the projection to flip around the content
Since we use an FBO to render the contents of the render node tree, the
coordinate space is going to be flipped in GL. We can undo the flip by
using an appropriate projection matrix, instead of changing the sampling
coordinates in the shaders and updating all our coordinates at render
time.
2016-10-18 11:49:10 +01:00
Emmanuele Bassi
6c92846936 widget: Fix compatibility fallbacks 2016-10-18 11:49:10 +01:00
Emmanuele Bassi
3d90a070d5 gsk: Tie render nodes to renderers
Render nodes need access to rendering information like scaling factors.
If we keep render nodes separate from renderers until we submit a nodes
tree for rendering we're going to have to duplicate all that information
in a way that makes the API more complicated and fuzzier on its
semantics.

By having GskRenderer create GskRenderNode instances we can tie nodes
and renderers together; since higher layers will also have access to
the renderer instance, this does not add any burden to callers.

Additionally, if memory measurements indicate that we are spending too
much time in the allocation of new render nodes, we can now easily
implement a free-list or a renderer-specific allocator without breaking
the API.
2016-10-18 11:49:10 +01:00
Emmanuele Bassi
f0c04cdd09 gtk: Port GtkWindow to render nodes
WARNING: BROKEN COMMIT
2016-10-18 11:49:09 +01:00
Emmanuele Bassi
cd0de3f87c gtk: Add GtkContainer API to gather render nodes
We cannot implement GtkWidgetClass.get_render_node() in GtkContainer
without breaking the fallback path that renders a widget to a single
render node rasterization. For GtkContainer subclasses we should provide
a simple API, similar to gtk_container_propagate_draw(), that gathers
all the render nodes for each child.
2016-10-18 11:49:09 +01:00
Emmanuele Bassi
43904892bc gtk: Name GSK render nodes
For debugging purposes it's helpful to name the nodes.
2016-10-18 11:49:09 +01:00
Emmanuele Bassi
dc3b240c20 Ensure that render nodes are translated
The clip rectangle may have non-zero offsets, so we need to ensure that
the GskRenderNode associated to the rendered area is translated by those
same offsets.
2016-10-18 11:49:08 +01:00
Emmanuele Bassi
b997f4c575 gtk: Use GskRenderNode to render widgets
We need a virtual function to retrieve the GskRenderNode for each
widget, which is supposed to attach its own children's GskRenderNodes.
Additionally, we want to maintain the existing GtkWidget::draw mechanism
for widgets that do not implement get_render_node() — as well as widgets
that have handlers connected to the ::draw signal.
2016-10-18 11:49:06 +01:00
Emmanuele Bassi
258af60c18 gtk: Add a GskRenderer to GtkWindow
Each top-level should have its own GskRenderer, to be used when drawing
the render node tree.
2016-10-18 11:49:06 +01:00
Emmanuele Bassi
0e2a87a4bc build: Add GSK deps to GTK 2016-10-18 11:29:34 +01:00
Emmanuele Bassi
3fb413beea label: Avoid shadowing variables 2016-10-18 11:29:34 +01:00
Timm Bäder
4384628afb Remove GtkAction 2016-10-18 00:34:41 +02:00
Timm Bäder
ead36206a3 Remove GtkActionGroup 2016-10-18 00:34:41 +02:00
Timm Bäder
a864f4d474 widget: Not all toplevels are also containers 2016-10-18 00:34:41 +02:00
Timm Bäder
f7d22fec7b Remove GtkRecentAction 2016-10-18 00:34:41 +02:00
Timm Bäder
d963ede668 Remove GtkUIManager 2016-10-18 00:34:41 +02:00
Timm Bäder
62b2949fa2 Remove GtkActivatable 2016-10-18 00:34:41 +02:00
Timm Bäder
a8a2588cab recentchooser: Stop implementing GtkActivatable 2016-10-18 00:34:41 +02:00
Timm Bäder
d0c087be37 recentchooserdefault: Stop implementing GtkActivatable 2016-10-18 00:34:40 +02:00
Timm Bäder
0c7d091651 toolitem: Stop implementing GtkActivatable 2016-10-18 00:34:40 +02:00
Timm Bäder
41f5d3b14c Remove GtkToggleAction 2016-10-18 00:34:40 +02:00
Timm Bäder
53ab8eb46d Remove GtkRadioAction 2016-10-18 00:34:40 +02:00
Timm Bäder
bc7206d70f Remove GtkStock 2016-10-18 00:29:20 +02:00
Timm Bäder
cf56decbb4 infobar: Stop looking at stock items
GtkButton doesn't have a use-stock property anymore anyway.
2016-10-18 00:29:20 +02:00
Timm Bäder
301e1a4d55 window: Remove decoration-button-layout style property
GtkSettings has a gtk-decoration-layout property for this.
2016-10-18 00:29:20 +02:00
Timm Bäder
7823406db4 window: Remove decoration-resize-handle style property 2016-10-18 00:29:20 +02:00
Timm Bäder
4bf1e4ebe6 toolbar: Remove max-child-expand child property 2016-10-18 00:29:20 +02:00
Timm Bäder
dece018994 Remove GtkAlignment 2016-10-18 00:29:19 +02:00
Timm Bäder
e0d50233f6 gtkapplication: Remove deprecated API 2016-10-18 00:29:19 +02:00
Timm Bäder
700300eb81 treeview: Remove deprecated adjustment API 2016-10-18 00:29:19 +02:00
Timm Bäder
d5e3897052 combobox: Remove deprecated API 2016-10-18 00:29:19 +02:00
Timm Bäder
3ad624d6c0 adjustment: Remove deprecated API 2016-10-18 00:29:19 +02:00
Timm Bäder
b65908da3e menutoolbutton: Remove deprecated API 2016-10-18 00:29:19 +02:00
Timm Bäder
3573cdc0cd popover: Remove deprecated API 2016-10-18 00:29:19 +02:00
Timm Bäder
d9a3afb059 range: Remove unused class struct members 2016-10-18 00:29:19 +02:00
Timm Bäder
2a07ee2dac filechooserbutton: Remove deprecated API 2016-10-18 00:29:19 +02:00
Timm Bäder
1b2f291c1d messagedialog: Remove deprecated API 2016-10-18 00:29:19 +02:00
Timm Bäder
be2f19663b button: Add icon-name property
Remove the old-style button construction that allowed to show both an
icon and a label and change visibility based on a GtkSetting.
2016-10-18 00:29:19 +02:00
Timm Bäder
e9a974f4f6 buttonaccessible: Stop looking at the button's image 2016-10-18 00:29:19 +02:00
Timm Bäder
24866c5d12 radiomenuitem: Remove GtkActivatable code 2016-10-18 00:29:18 +02:00
Timm Bäder
efe4a36746 toolbutton: Stop implementing GtkActivatable 2016-10-18 00:29:18 +02:00
Timm Bäder
dd03372eac switch: Stop implementing GtkActivatable 2016-10-18 00:29:18 +02:00
Timm Bäder
8cafd3c5a7 menuitem: Stop implementing GtkActivatable 2016-10-18 00:29:18 +02:00
Timm Bäder
d844abe066 Remove GtkTable 2016-10-18 00:29:18 +02:00
Timm Bäder
b082fb598d gtkwindow: Stop checking gtk-menu-bar-accel 2016-10-18 00:29:18 +02:00
Timm Bäder
7e16396cc5 button: Stop implementing GtkActivatable 2016-10-18 00:29:18 +02:00
Timm Bäder
05211d200f button: Stop checking for GtkSettings:gtk-button-images setting 2016-10-18 00:29:18 +02:00