Carlos Garnacho
3a15c8241e
gdk: Remove synthetic crossing event emission due to geometry changes
...
This just applied to child windows, but now GDK should just take care of
toplevels, which shall get crossing events from the windowing when the right
conditions apply.
Removing this code fixes confused crossing state in widgets and messed up
window_under_pointer tracking (Which now is meant to be toplevels) when any
of the remaining child GdkWindows trigger these crossing events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
61dd925b32
gdk: Ensure to implicitly deactivate grabs when an impl window is hidden
...
For some reason this wasn't done on windows with an impl, but it totally should.
Probably hidden by grabs in menus and somesuch being done on a child window.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ee894903c7
gtkpopover: Use event coordinates right away to detect clicks outside.
...
There's no need anymore to translate coordinates, the event already contains
popover-relative ones.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
47e505781e
gtkwindow: Implement ::pick to extend picking to popovers.
...
This makes interaction possible with popovers again.
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
34fdc51392
Constify GdkEvent parameters in gtk_get_event_widget and _event_target
2017-05-25 16:25:59 +02:00
Timm Bäder
19174d8d94
flowbox: Fix motion notify handler
...
Same story as in GtkListBox.
2017-05-25 16:25:59 +02:00
Timm Bäder
2ad2ecad44
flowbox: Fix child item selection
2017-05-25 16:25:59 +02:00
Timm Bäder
dd836fff35
flowbox: Fix child item allocation
2017-05-25 16:25:59 +02:00
Timm Bäder
030b96cb49
scrolledwindow: Avoid critical when removing source
...
Make sure indicator->conceil_timer is actually set before trying to
remove it.
2017-05-25 16:25:59 +02:00
Timm Bäder
084b356d1e
testlist: Fix custom css
2017-05-25 16:25:59 +02:00
Timm Bäder
e54d8a6114
scrolledwindow: Calculate indicator coords relative to scrolledwindow
...
The event coordinates we get are relative to the scrolledwindow
coordinates.
2017-05-25 16:25:59 +02:00
Timm Bäder
782477188a
scrolledwindow: Stop checking event->detail in leave-notify
...
This is obsolete and resulted in sometimes stuck .hovering style classes
on scrollbars.
2017-05-25 16:25:59 +02:00
Timm Bäder
5ae9ca79e4
linkbutton: Fix hand cursor when hovering
...
Use the new gtk_widget_set_cursor instead of setting it on the
GdkWindow.
2017-05-25 16:25:59 +02:00
Timm Bäder
3e44a3920a
listbox: Fix row hovering
...
Drop the in_widget flag since motion events the listbox receives are
always inside the listbox. Also drop the manual coordinate translation
code using GdkWindows.
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
Timm Bäder
c83b8d17ff
meson: Add gtkpointerfocus.c to sources
2017-05-25 16:25:59 +02:00
Timm Bäder
f5e8d7a4e2
window: Hide titlebox when undecorated
...
We don't draw or size-allocate the titlebar when the window is
fullscreen or undecorated, so reflect this by setting it to
!child_visible. This can happen when changing the value of the decorated
property while the window is shown.
2017-05-25 16:25:59 +02:00
Timm Bäder
81cdc8713c
combobox: Only react to UP/DOWN scroll events
...
The old else block scrolled down for everything except GDK_SCROLL_UP
scroll events, e.g. for smooth scroll events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
40ab7e1c95
gtkmenu*: Simplify event handling
...
Instead of delegating on the parent shell of a menu item/shell on a variety
of situations, Simplify event handling so:
1) Menu item selection is handled entirely on GtkMenuItem through crossing
events.
2) The deepmost menu shell handles clicks inside and outside of it.
This avoids the rather hard to follow gtk_widget_event() calls going on all
throughout the handling of crossing and button events, and makes menus work
again.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
33c5f3c193
gtkmain: Add API to get the target of a GdkEvent
...
This can be used on grabbing situations to determine the target of
the event. This mainly matters for GtkMenu.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
da56fae5df
gtkmain: Ensure there is a current event handling crossing events
...
The "current event" will be the real one that is triggering the crossing
notifications, not the synthesized events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
03a63204c1
gtkmain: Ignore GDK_CROSSING_GRAB/UNGRAB crossing events for picking purposes
...
Especially with owner_events=TRUE, this doesn't mean anything for picking, as
events will be reported as usual inside the application.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
65de0ebea3
gdk: Make it possible to attach user data to GdkEvents
...
As event->any.window is the toplevel, this is not useful anymore to
determine the window/widget that is the target for this event. Add
helper functions to attach user data to GdkEvents so the target
widget can be stored on the gtk/ side.
These calls should be made private with the rest of GdkEvent related
API.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
5483b9db2d
gtkmain: Avoid doubly propagation of enter/leave events from windowing
...
Crossing events are already generated when picking the new pointer position,
so we don't have to propagate the windowing crossing event as-is.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
f9924b7e3e
gtknotebook: Drop drag_window
...
It is not necessary anymore to implement tab DnD, since we just render
it on top.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
2c7102b557
gtkiconview: Remove view GdkWindow
...
It's not necessary anymore for clipping nor receiving events. So just
remove it. The event handling code was expecting events in bin_window
coordinates, and have been updated to relying on widget-relative coords.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
2f6c4ef68d
gtkviewport: Remove view window
...
It is not really necessary for clipping nor receiving events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
547370651b
gtkrevealer: Remove view window
...
It's not necessary anymore for either clipping or event delivery
2017-05-25 16:25:59 +02:00
Carlos Garnacho
94094611bc
gtkpaned: Remove per-child windows
...
Those are no longer necessary for clipping nor receiving events, so just
remove them.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ae43ca7e49
gtklayout: Remove widget window
...
It can be entirely replaced by a clip allocation on the widget.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
fe40abc636
gtkoverlay: Remove per-child windows
...
They are no longer necessary to do child positioning nor input
handling.
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
6c47938b00
gtktreeview: Remove header window
...
It is no longer necessary to overlay the column headers above the
treeview.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
cfd5a76ece
gtktreeview: Remove widget window
...
It can be entirely replaced by setting a proper clip rectangle.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ea4ee876ec
gtkstack: Remove view window
...
This widget already sets a clip area, so the view window can be safely
removed.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
e342f90a99
gtktoolpalette: Remove child window
...
This is not necessary for rendering anymore, as the clip is set by the
parent scrolledwindow. It's not necessary either for receiving input
events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
57d7c34d03
gtkflowbox: Remove child window
...
This widget correctly sets up a clip, so it is not necessary neither
for rendering nor for receiving input events.
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
fa04bf6238
gtkmain: Use window-internal API to update pointer cursors
2017-05-25 16:25:59 +02:00
Carlos Garnacho
599344d428
gtkwindow: Add private API to update pointer cursors
2017-05-25 16:25:59 +02:00
Carlos Garnacho
87c7ca910c
gtkscrolledwindows: Remove child windows
...
Both for the view (compensated by widget clip) and the scrollbar
indicators (just not needed anymore).
2017-05-25 16:25:59 +02:00
Carlos Garnacho
8731ca6ca5
gtkexpander: Remove event window
...
Detect presses/releases inside the label area instead.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
1858f310aa
gtkwindow: Implement window resizing sans-GdkWindow
...
We can just replace window comparisons with coordinate matching, the
cursor corresponding to edges is now set in a capture-phase motion
handler, as cursors aren't set on GdkWindows anymore.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
d9d0c56eb7
gtktoolitem: Remove gtk_tool_item_set_use_drag_window()
...
This API call is not necessary anymore, since it's no longer necessary
to receive events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
072a13d0b7
gtkswitch: Remove event window
...
It's not necessary anymore to receive input events. The pan gesture has
been set on the capture phase as the child widgets may capture during
bubbling.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ef1e900a53
gtkmenuitem: Remove input window
...
It's not necessary anymore to receive events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
ee13d44622
gtkglarea: Remove input window
...
It's not necessary to receive events anymore.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
bee6148399
gtkseparatortoolitem: Remove event window
...
It's not necessary. It wasn't either before, as this widget handles no
events.
2017-05-25 16:25:59 +02:00
Carlos Garnacho
de3e20107a
gtkcolorswatch: Remove input window
...
It's not necessary to receive events anymore.
2017-05-25 16:25:59 +02:00