Timm Bäder
42aa7453ab
Fix baselines wrt css values
...
The reported minimum baseline is for the reported min height, but if the
css min-height is greater than that, we need to account for that fact
when saving the baseline.
Since the reported baseline is relative to the widget's origin, we also
need to add the top values for margin, border and padding to the
reported baseline.
2017-07-19 21:27:14 -04:00
Timm Bäder
ea3876d26a
widget: black is the new red
2017-07-19 21:27:14 -04:00
Timm Bäder
bc4c32505a
menu: Popup at window coordinates if widget is given
...
Since widget allocations are now relative to the parent's origin, we
need to pass the window allocation here.
2017-07-19 21:27:14 -04:00
Timm Bäder
2cbaa998db
widget: Fix drawing invalidation with windowed widgets
...
E.g. popovers. Find the parent of the given widget with the window and
invalidate the given region in that window.
2017-07-19 21:27:14 -04:00
Timm Bäder
e36ddfec17
Remove all widget style property code
2017-07-19 21:27:14 -04:00
Timm Bäder
a826ee37ca
widget: Remove _set_simple_clip
...
Unused.
2017-07-19 21:27:14 -04:00
Timm Bäder
1bad3e1f28
widget: Transform clips into right coordinate space
...
The values passed to gtk_widget_set_clip are relative to the widget's
origin, but we need the values to be relative to priv->allocation.
2017-07-19 21:27:14 -04:00
Timm Bäder
63ba8fa355
widget: Consider opacity when drawing toplevels
...
This used to work in gtk3 and is used e.g. in the inspector when using
wayland.
2017-07-19 21:27:14 -04:00
Timm Bäder
b17d998eb5
widget: Add new allocation accessors
2017-07-19 21:27:14 -04:00
Timm Bäder
360b075164
widget: Avoid some type checks in snapshot_child
2017-07-19 21:27:13 -04:00
Timm Bäder
2b06986c38
widget: "fix" event and invalidation coordinates
2017-07-19 21:27:13 -04:00
Timm Bäder
241a009938
widget: Adapt translate_coordinates to coordinate changes
2017-07-19 21:27:13 -04:00
Timm Bäder
bccaeb0e2d
widget: Make allocations parent-content-allocation relative
2017-07-19 21:27:13 -04:00
Timm Bäder
ec6184c2af
widget: Remove queue_draw_child vfunc
2017-07-19 21:27:13 -04:00
Timm Bäder
73f5f45456
widget: Draw widget clips with GEOMETRY debugging
2017-07-19 21:27:13 -04:00
Timm Bäder
90c8a3f920
widget: Bring back layout debugging
2017-07-19 21:27:13 -04:00
Timm Bäder
ec51c63313
widget: Bring resize and baseline debug rendering back
2017-07-19 21:27:13 -04:00
Timm Bäder
dd713e0ae2
widget: Consider css margins when setting clip
...
This is optional for positive margins as they just increase the widget
allocation. However, with negative css margins, the allocation is
smaller than the clip.
This fixes scale sliders leaving a small trail behind.
2017-07-19 21:27:13 -04:00
Timm Bäder
2651fcbef9
widget: Special-case popover in snapshot
...
Just like we do it for GtkWindow.
2017-07-19 21:27:12 -04:00
Timm Bäder
2cedf1be9c
widget: Remove gtk_widget_set_allocation
2017-07-19 21:27:12 -04:00
Timm Bäder
a71edd2925
widget: Add private get_margin_allocation
2017-07-19 21:27:12 -04:00
Timm Bäder
ede6f2ab59
Slightly rework clip handling
...
always initialize clips to the (content) allocation, don't walk up the
widget hierarchy in gtk_widget_set_clip, implement
gtk_widget_size_allocate in GtkSeparator. This way we don't end up using
uninitialized clip values.
The entire clip handling is up for major rework since we can't and don't
want to force every single widget to call _set_clip in size-allocate
implementations.
2017-07-19 21:27:12 -04:00
Timm Bäder
c87be0a27a
widget: Don't set the allocation in size-allocate
...
If widgets chain up in their size-allocate implementation, they pass the
content allocation and not the widget allocation which will cause the
wrong allocation to be set.
2017-07-19 21:27:12 -04:00
Timm Bäder
ff6db012d9
widget: Add private get_border_allocation
2017-07-19 21:27:11 -04:00
Timm Bäder
a1b3a26ba4
widget: Add private gtk_widget_get_content_allocation
2017-07-19 21:27:11 -04:00
Timm Bäder
4e0f569b26
widget: Union clip with allocation and box shadow size
2017-07-19 21:27:11 -04:00
Timm Bäder
bcbcff5db9
widget: Pass content allocation to size-allocate vfunc
2017-07-19 21:27:11 -04:00
Timm Bäder
8761d4d609
widget: Add default snapshot implementation
...
gtk_widget_snapshot will snapshot the css box, the default snapshot
vfunc now gtk_widget_snapshot_child's all child widgets.
2017-07-19 21:27:11 -04:00
Timm Bäder
442d084a2a
widget: Draw focus outline
2017-07-19 21:27:10 -04:00
Timm Bäder
4b75b20c34
Widget: Disable css box drawing for GtkWindow
...
Until we know how we solve that.
2017-07-19 21:27:10 -04:00
Timm Bäder
7656bd9bc3
widget: Draw background and border for every widget
2017-07-19 21:27:10 -04:00
Kjell Ahlstedt
1b697fd7c2
widget: Fix gtk_widget_insert_after/before() docs
...
Add beginning double asterisks and function names. Correct the parameter
names (next/previous_child -> next/previous_sibling). Make the documentation
of the two functions more similar.
https://bugzilla.gnome.org/show_bug.cgi?id=783445
2017-06-06 14:57:52 +02:00
Carlos Garnacho
690eb8ede6
gtkwidget: Lookup the event target when cancelling GdkEventSequences
...
We were getting the toplevel most often here, so the gestures weren't
properly cleaned up.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
b62b33c1d9
gtk: Fix event delivery on GTK_PHASE_TARGET controllers
...
Look up the event target, not the "event widget" which is based on the
event window, and thus points to the toplevel.
2017-05-25 16:25:59 +02:00
Timm Bäder
eef33d34d4
widget: Make sure we're not calling _get_parent on NULL
...
We already issue the first _get_parent call before even entering that
loop, so make sure `parent` is not NULL. This happens when event_widget
is already a toplevel, and this change fixes row-dragging in treeviews.
2017-05-25 16:25:59 +02:00
Timm Bäder
a0016758a8
widget: Copy event in gtk_widget_event and _captured_event
...
To ensure that we never translate the coordinates to widget coordinates
twice.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
e2c38ddc22
gtkwidget: Add private set_pass_through() call
...
We could eventually support pointer-event in CSS here, in the mean
time add this call to replace the GdkWindow API.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
a595f92b7b
gtkwidget: Visually update cursors inside widget when changing cursor
2017-05-25 16:25:59 +02:00
Carlos Garnacho
a72404dd5a
gtk: Mass delete all GtkWidget event mask API
...
We now rely on toplevels receiving and forwarding all the events
the windowing should be able to handle. Event masks are no longer a
way to determine whether an event is deliverable ot a widget.
Events will always be delivered in the three captured/target/bubbled
phases, widgets can now just attach GtkEventControllers and let those
handle the events.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
ef4f0e5336
gtkwidget: Make gtk_widget_event() Accept pointing events in root coordinates
...
This function will, at the last minute, ensure the event contains the right
widget-relative coordinates for the widget the event is being emitted to.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
7c16bb93b5
gtkwidget: Add private cursor setter/getter
...
This should be eventually replaced by CSS cursors, but at the moment
it must be handled on the gtk/ side.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
8f24df1c19
gtk: Update GtkPointerFocus targets on mapping/sensitivity changes
...
Those are situations that must cause foci on these widgets to repick
themselves.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
f50875f8d0
gtkwidget: Expose gtk_widget_common_ancestor()
...
This function will be useful in other places, such as determining the
widgets that must receive crossing events after pointer picking points
to another widget.
2017-05-25 16:25:58 +02:00
Carlos Garnacho
9c97bf0c02
GtkWidget: Add ::pick vmethod
...
The default implementation iterates through all children, so should suffice
for most widgets.
2017-05-25 16:25:58 +02:00
Timm Bäder
8b2c71703e
widget: Remove useless assignment
...
We don't use adjusted_allocation after this line.
2017-05-05 11:18:05 +02:00
Timm Bäder
c405fe23bf
widget: remove double assignment
...
We never read the value we assign here.
2017-04-30 20:22:42 +02:00
Timm Bäder
1b36c325eb
widget: Fold queue_resize_on_widget into its only caller
2017-04-30 18:38:10 +02:00
Timm Bäder
fe429f8806
gtkwidget: Queue a resize on the parent when unparenting
...
gtk_widget_set_parent (via gtk_widget_reposition_after) will queue a
resize on the parent widget automatically when adding a child widget, so
unparent should do the same
2017-04-25 20:30:37 +02:00
Timm Bäder
7e1373a08c
widget: Fix set_parent/unparent docs to not mention GtkContainer
...
They can both be used by non-container widgets these days.
2017-04-25 20:30:37 +02:00
Timm Bäder
ba363fbb71
widget: Add gtk_widget_insert_before/after
...
To insert a widget into the widget tree before or after a child widget
of the soon-to-be parent.
2017-04-25 20:29:02 +02:00