Commit Graph

1686 Commits

Author SHA1 Message Date
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
Timm Bäder
c9fc201f77 Implement tab/up-down/left-right focus sorting for widgets
basically do what GtkContainer already did.
2017-03-31 09:50:40 +02:00
Timm Bäder
6e9d857714 Widget: Shuffle focus code around 2017-03-31 09:50:40 +02:00
Timm Bäder
0153147ca2 widget: Allow focusing widgets with non-container parent
Especially if said parent also has can-focus set to FALSE, which is a
special-case we had before for GtkContainer instances.
2017-03-31 09:50:40 +02:00
Timm Bäder
cc05fc574c window: Remove _gtk_window_set_is_toplevel
All GtkWindow instances are toplevels.
2017-03-31 09:50:39 +02:00
Timm Bäder
0d0cb6e192 widget: Emit ::focus regardless of container-ness and can-focus 2017-03-31 09:50:39 +02:00
Timm Bäder
885bcd9fe4 container: Remove focus_child pointer
Use GtkWidget's instead.
2017-03-31 09:50:39 +02:00
Timm Bäder
64544968e9 widget: Also reset focus on non-container widgets 2017-03-31 09:50:39 +02:00
Timm Bäder
43cdeee3c4 widget: Save pointer to focus child
Do the same thing GtkContainer does.
2017-03-31 09:50:39 +02:00
Timm Bäder
8f2d0bc5a3 widget: Fix checks in gtk_widget_snapshot()
If the widget isn't drawable anyway, just return;

If the widget needs an allocate, print a warning, since it indicates a
problem in the widget workflow (e.g. forgot to size_allocate a child
widget).

This maches the previous checks in gtk_widget_draw (with the same
problems).
2017-03-31 09:50:39 +02:00
Timm Bäder
653b766e30 widget: Add a GtkBuildable::add_child implementation
Just call gtk_widget_set_parent in there.
2017-03-31 09:50:38 +02:00
Christoph Reiter
e4b0bedb5d gtk_widget_intersect: fix annotations
https://bugzilla.gnome.org/show_bug.cgi?id=773228
2017-03-30 11:19:32 +02:00
Timm Bäder
1aa37687be widget: Prepend style classes to list when parsing
Since the later gtk_style_context_add_class doesn't care about the order
of the style classes, we can as well just prepend style classes to the
list and avoid the squared behavior when appending to a linked list.
2017-03-21 19:04:58 +01:00
Timm Bäder
73f8636687 widget: Remove direction-dependent margin code
Since margin-left and margin-right are gone, we don't have to care
about the difference between them and start/end anymore and we can just
save start as left and end as right.
2017-03-05 16:24:20 +01:00
Timm Bäder
f860ff8647 widget: Remove get_valign_with_baseline
This only existed for backwards compat reasons which aren't interesting
for gtk4.
2017-03-05 15:18:32 +01:00
Timm Bäder
a29343d4cf widget: Reword size request documentation 2017-03-04 08:57:50 +01:00
Lionel Landwerlin
72801a27eb widget: propagate scale factor upon reparenting a widget
When a widget is created, its default scale is the scale of the
primary screen (for instance 2). But once parented to another widget
its scale factor should be the one of its parent (if parented to a
widget on a screen at scale factor 1, it should be 1).

The problem is that we don't emit the notify::scale-factor signal when
reparenting happens.

https://bugzilla.gnome.org/show_bug.cgi?id=776821
2017-02-18 02:53:57 +00:00
Daniel Boles
02e9fb5a78 widget: Document signal mnemonic-activate
Name the extra bool argument, and move the explanatory paragraph from
the emitting method to the signal, with some minor tweaks to wording.

https://bugzilla.gnome.org/show_bug.cgi?id=778534
2017-02-15 21:44:29 +00:00
Timm Bäder
6a6b6549ea widget: Remove get_preferred_width/height mention in warning 2017-02-14 16:56:55 +01:00
Timm Bäder
6c6ed7496c widget: Remove gtk_widget_class_list_style_properties
Unused.
2017-01-30 18:11:00 +01:00
Timm Bäder
572639fed7 widget: Remove gtk_widget_get_preferred_size mention from docs
Mention gtk_widget_measure instead.
2017-01-22 15:01:53 +01:00
Timm Bäder
f05402ce2b widget: Remove warning about already visible widgets
That was just added by mistake of course.
2017-01-22 14:48:28 +01:00