On Wed, 12 Nov 2014 13:32:59 +0200 Giulio Camuffo <[email protected]> wrote:
> 2014-11-12 13:25 GMT+02:00 Pekka Paalanen <[email protected]>: > > On Sat, 4 Oct 2014 13:58:33 +0300 > > Giulio Camuffo <[email protected]> wrote: > > > >> This allows to move or resize a xwayland client by acting on all > >> its views. > > > > Hmm, is this a good thing? What use cases you had in mind? > > I have two views for the same surface, and they are both user > interactable and indistinguishable from each other. As of now, only > one can be moved or resized, for no apparent reason. > > > > > Shouldn't there be a difference between move/resizeable views and other > > views? Like if you have an additional view in a pager or the alt+tab > > list, that shouldn't be resizable and it might not want to be > > interactive (input-capable) at all. > > Yeah, but that can be done in the shell, by looking at the view that > is under the pointer. If that view is not supposed to be used to > resize the surface, ignore the resize request. Only if you actually have a grab, right? Otherwise the core input event machinery will relay input events to the surface. But yes, we always(?) have a custom grab in those situations. > > > > What's the idea here? Not just for Xwayland windows but all of them. > > > > I think we have no distinction between interactive and non-interactive > > views currently, so we just handle it through grabs, am I right? > > > > So, this patch is simply to make the Xwayland windows behave the same > > as native windows? > > Yes, basically, or more similar. Alright, pushed. Thanks, pq > >> --- > >> xwayland/window-manager.c | 7 ++++--- > >> 1 file changed, 4 insertions(+), 3 deletions(-) > >> > >> diff --git a/xwayland/window-manager.c b/xwayland/window-manager.c > >> index 4e91f9d..a283a3c 100644 > >> --- a/xwayland/window-manager.c > >> +++ b/xwayland/window-manager.c > >> @@ -1214,8 +1214,8 @@ weston_wm_pick_seat_for_window(struct > >> weston_wm_window *window) > >> > >> seat = NULL; > >> wl_list_for_each(s, &wm->server->compositor->seat_list, link) { > >> - if (s->pointer != NULL && > >> - s->pointer->focus == window->view && > >> + if (s->pointer != NULL && s->pointer->focus && > >> + s->pointer->focus->surface == window->surface && > >> s->pointer->button_count > 0 && > >> (seat == NULL || > >> s->pointer->grab_serial - > >> @@ -1248,7 +1248,8 @@ weston_wm_window_handle_moveresize(struct > >> weston_wm_window *window, > >> &wm->server->compositor->shell_interface; > >> > >> if (seat == NULL || seat->pointer->button_count != 1 > >> - || !window->view || seat->pointer->focus != window->view) > >> + || !seat->pointer->focus > >> + || seat->pointer->focus->surface != window->surface) > >> return; > >> > >> detail = client_message->data.data32[2]; > > _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
