408 Commits

Author SHA1 Message Date
Jasper St. Pierre
7c6c4d63c5 seat: Move the keyboard resource creation over to MetaWaylandKeyboard 2014-04-17 19:15:53 -04:00
Jasper St. Pierre
5d43e33032 seat: Don't set the data device key focus on get_keyboard creation
It's not necessary, as we don't use anything from the protocol
keyboard at all.
2014-04-17 19:15:53 -04:00
Jasper St. Pierre
45a8a3f490 seat: Move pointer event handling to MetaWaylandPointer as well
Now everything that deals with the pointer is inside meta-wayland-pointer.c
2014-04-17 19:15:53 -04:00
Jasper St. Pierre
bdf55bc674 seat: Rewrite event handling in terms of MetaWaylandPointer 2014-04-17 19:15:53 -04:00
Jasper St. Pierre
e15c260e56 seat: Group CLUTTER_SCROLL handling together with other pointer events 2014-04-17 19:15:53 -04:00
Jasper St. Pierre
65ed8a817d seat: Don't save the current stage ourselves
ClutterInputDevice already saves it.
2014-04-17 19:15:53 -04:00
Jasper St. Pierre
a8d2dfd14f seat: Don't require an event to repick()
We always pass NULL, and anywhere where we want to pass an event
should be handled internally.
2014-04-17 19:15:53 -04:00
Jasper St. Pierre
e02bf13206 seat: Remove incorrect comment above repick 2014-04-17 19:15:53 -04:00
Jasper St. Pierre
4b7d77864a seat: Move update_pointer to MetaWaylandPointer 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
72e4d42267 seat: Reorder handle_event helpers near handle_event 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
1abdd7be10 seat: Move pointer interface over to MetaWaylandPointer 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
f3d88ca1d1 seat: Rewrite the pointer interface in terms of MetaWaylandPointer 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
15d89d451f seat: Move update_cursor_surface to the end
It's now only a public API.
2014-04-17 19:15:52 -04:00
Jasper St. Pierre
4510b82361 seat: Move set_cursor_surface and all that tracking to MetaWaylandPointer 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
ae0853ed86 seat: Move cursor storage to MetaWaylandPointer 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
76544ff6e1 seat: Rewrite get_pointer / get_keyboard in terms of MetaWaylandPointer 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
dde96951a7 seat: Rewrite handle_scroll in terms of MetaWaylandPointer 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
24eb737858 keyboard: Remove the useless return value of init 2014-04-17 19:15:52 -04:00
Jasper St. Pierre
ddc7938961 keyboard: Reformat 2014-04-17 19:15:51 -04:00
Jasper St. Pierre
4f2dc77ec3 keyboard: Reorder
The correct order is:

init
release
update
handle_event
set_focus
start_grab
end_grab
other stuff
2014-04-17 19:15:51 -04:00
Jasper St. Pierre
678fa52ae1 seat: Reformat 2014-04-17 19:15:51 -04:00
Jasper St. Pierre
1be97f3d59 seat: Reorder 2014-04-17 19:15:51 -04:00
Jasper St. Pierre
30ecd7c770 keyboard: Gobble up key events whenever we have a focused surface
If we have a focused surface, we need to eat up key events, not
just if we have a non-empty focus resource list. The latter would
happen if we have a focused client but it never called get_keyboard.
2014-04-17 19:15:51 -04:00
Jasper St. Pierre
0dd27edb91 xwayland: Remove some unused includes 2014-04-17 16:23:37 -04:00
Jasper St. Pierre
6a44f04b51 xwayland: Stop using UNIX signals for readiness
The latest Xorg / Xwayland has support for -displayfd being used
in conjunction with an explicit display number. Use that to know
when the X server is ready, rather than UNIX signals, because
they're UNIX signals.
2014-04-17 16:23:37 -04:00
Jasper St. Pierre
745134e066 xwayland: Rename sp to something a bit more handy
We also want to create a socketpair for -displayfd instead
of using signals.
2014-04-17 16:23:37 -04:00
Jasper St. Pierre
72b1a2837d xwayland: Clean up display finding code
Split out and make it more manageable.
2014-04-17 16:23:37 -04:00
Jasper St. Pierre
e5ab4f13f1 xwayland: Put the filename in the error message 2014-04-17 16:23:37 -04:00
Jasper St. Pierre
14deeef8a7 xwayland: Use %m instead of explicit strerror 2014-04-17 16:23:37 -04:00
Jasper St. Pierre
8c0ef829c9 pointer/keyboard: Unset the entire focus when the surface is destroyed
Otherwise, we'll end up with dangling parts in our resource list.
2014-04-16 19:04:58 -04:00
Jasper St. Pierre
eb1c9175f9 wayland: Move the RESULT_RESIZED code to the proper place
We need to set this when we update window->rect, not when we simply
send out a configure event.
2014-04-16 16:31:45 -04:00
Jasper St. Pierre
f25243e121 wayland: Don't move the window when we're simply sending out a configure
If we're sending out a configure event, we can't immediately move the
window; we need to instead wait to apply the new position when the
client sends a new buffer.
2014-04-16 16:31:45 -04:00
Jasper St. Pierre
c1f4352683 window: Add proper interpretation of dx/dy
dx/dy should be against the regular window's rect, and need to
be ignored when we're resizing. Instead, we use gravity to anchor
the window's new rectangle when resizing.
2014-04-16 16:31:45 -04:00
Jasper St. Pierre
260b6d02f2 wayland: Simplify the move/resize code
The old protocol is out of date and broken for resizing at the
top/left. This is still as broken, but a lot simpler.
2014-04-16 16:31:45 -04:00
Jasper St. Pierre
339a78718d pointer/keyboard: Support more than one focused resource
Sophisticated clients, like those using ClutterGtk, will have more
than one focused resource per client, as both Clutter and GDK will
ask for a wl_pointer / wl_keyboard. Support this naturally using
the same "hack" as Weston: multiple resource lists, where we move
elements from one to the other.
2014-04-16 15:31:53 -04:00
Jasper St. Pierre
f1034d0459 pointer/keyboard: Remove focus_resource_listener
In order to support multiple pointers for the same client, we're
going to need to kill it.

This will cause crashes for now, but will be fixed by the next
commit.
2014-04-16 15:30:42 -04:00
Jasper St. Pierre
edfaf3de49 pointer/keyboard: Stop using focus_resource for anything unessential 2014-04-16 15:30:41 -04:00
Jasper St. Pierre
bbec66c2d8 pointer/keyboard: Surfaces should always have resources
There's no possible way that they shouldn't.
2014-04-16 15:27:08 -04:00
Jasper St. Pierre
339b856d84 pointer: Clean up a tiny bit 2014-04-16 15:27:07 -04:00
Jasper St. Pierre
7560aaee73 pointer: Make sure to care about FFM even if the client didn't get a
resource
2014-04-16 15:27:03 -04:00
Jasper St. Pierre
2bcd4ab159 data-device: Don't poke into MetaWaylandKeyboard
It needs to know the wl_client that has keyboard focus, so add a simple
getter for that.
2014-04-16 15:26:58 -04:00
Jasper St. Pierre
c9d2a5bee2 pointer: Don't use default_grab_focus in popup grabs
default_grab_focus tries to add implicit grab semantics where
focus won't take effect if there's a pointer button down. This
is not what we want for popup grabs at all, as it's perfectly
valid to want to drag on a menu while there's a button down.
2014-04-12 00:31:21 -07:00
Jasper St. Pierre
30d534f17e display: Rename grab_op_is_wayland to grab_op_should_block_wayland
The idea here is that while we take a WM-side grab, like a compositor
grab or a resizing grab, we need to remove the focus from the Wayland
client.

We make a special exception for CLICKING operations, because these
are really an internal state machine while you're pressing on a button
inside a frame, and in this case, we need to not kill the focus.
2014-04-12 00:24:26 -07:00
Jasper St. Pierre
62e5faeb0c wayland: Remove the explicit surface commit for Xwayland
It's not needed anymore; we always keep the actor up-to-date.
2014-04-11 23:55:37 -07:00
Jasper St. Pierre
03cfe602d9 wayland: Always keep the MetaSurfaceActorWayland up-to-date
The MetaSurfaceActorWayland should always accurately reflect
the state of the MetaWaylandSurface, even if it's a cursor
surface.
2014-04-11 23:55:37 -07:00
Jasper St. Pierre
e1b0c9c756 wayland: Make synchronous subsurface a very special case in commit
Really, it is a special case. When the subsurface is synchronous,
commit changes meaning from being applied immediately to being
queued up for replay later. Handle this explicit special case
with an explicit special case in the code.

This means that in all other paths, we can unconditionally
apply the actor immediately.
2014-04-11 23:55:37 -07:00
Jasper St. Pierre
dbe4fc0e45 wayland: Always set the new buffer on the surface on commit
Even when it doesn't have a role.

This fixes cursors not quite working right, as they're a "detached"
surface without a role since nobody called set_cursor on them yet.
2014-04-11 23:55:37 -07:00
Jasper St. Pierre
f0bf9c7fc3 wayland: Check for newly_attached everywhere
Instead of using commit_attached_buffer / actor_surface_commit.

We want to kill the return values of these methods because we
really should always be calling them, even if the surface doesn't
have a role.
2014-04-11 23:55:37 -07:00
Jasper St. Pierre
d0f0be8b03 wayland: Only set newly_attached if the buffer changes
This cleans up the check to determine if the buffer changed,
meaning we shouldn't have to pass it around like we needed
to do before.
2014-04-11 23:55:37 -07:00
Jasper St. Pierre
f5e77d7f63 wayland: Remove some extraneous code
This is already handled by the double_buffered_state_reset at the end.
2014-04-11 23:55:37 -07:00