On Tue, 2014-09-09 at 10:06 +0300, Pekka Paalanen wrote: > On Tue, 9 Sep 2014 06:14:34 +0000 > "Zhang, Xiong Y" [email protected]> wrote: > > > On Thu, 12 Jun 2014 11:06:26 +0800 > > Xiong Zhang [email protected]> wrote: > > > > > Signed-off-by: Xiong Zhang [email protected]> > > > --- > > > clients/window.c | 26 ++++++++++++++++++++++++-- > > > shared/cairo-util.h | 7 +++++++ > > > shared/frame.c | 49 > > > +++++++++++++++++++++++++++++++++++++++++++++++++ > > > 3 files changed, 80 insertions(+), 2 deletions(-) > > > > > > > diff --git a/clients/window.c b/clients/window.c > > > index 7c9c518..a608a84 100644 > > > --- a/clients/window.c > > > +++ b/clients/window.c > > > @@ -363,6 +363,7 @@ struct window_frame { > > > > > > > uint32_t last_time; > > > uint32_t did_double, double_click; > > > + int32_t last_id, double_id; > > > }; > > > > > > > struct menu { > > > @@ -2380,7 +2381,23 @@ frame_touch_down_handler(struct widget > > > *widget, struct input *input, > > > { > > > struct window_frame *frame = data; > > > > > > > - frame_touch_down(frame->frame, input, id, x, y); > > > + frame->double_click = 0; > > > + if (time - frame->last_time <= DOUBLE_CLICK_PERIOD && > > > + frame->last_id == id) { > > > + frame->double_click = 1; > > > + frame->did_double = 1; > > > + frame->double_id = id; > > > + } else > > > + frame->did_double = 0; > > > + > > > + frame->last_time = time; > > > + frame->last_id = id; > > > + > > > + if (frame->double_click) > > > + frame_double_touch_down(frame->frame, input, id, > > > x, y); > > > + else > > > + frame_touch_down(frame->frame, input, id, x, y); > > > + > > > frame_handle_status(frame, input, time, > > > THEME_LOCATION_CLIENT_AREA); > > > > > >Hi, > > > > > >hmm, should this perhaps be restricted to the case, where you > > > start > > > >with no touches down, then one touch id does down-up, then again > > > >down-up, and only interpret that as a double-touch? > > > > In order to support multi touch, I didn't do this restriction. > > > > > >With your current code, isn't is possible to keep, say, one > > > finger down > > > >while double-touching with another finger? Is that intended? > > > >Thanks, > > > >pq > > > > It is my intend to keep one finger down while double-touching > > with another finger. > > So that we can operate with both hands and support multi touch. > > But touch points are never independent, are they? > Doesn't putting one finger down take an implicit grab, which causes > all > additional fingers to be restricted to the surface with the grab? > > You cannot distinguish left hand from right, fingers all create just > arbitrary touch points. > > In src/input.c it is written around line 1523: > /* the first finger down picks the view, and all > further go > * to that view for the remainder of the touch > session i.e. > * until all touch points are up again. */ > > So that means that you cannot hold a finger down on one window, and > then double-tap another window. > > Does it really make sense to be able to hold one finger down on the > same window, and double-tap with another? > > If I hold a finger down on the window, can I usually use another > finger > to push button widgets on the same window? By "usually" I mean in > whatever touch interfaces there are on the market / in the wild.
For what it's worth, this is my experience of how touch interfaces do indeed work. > > How would you distinguish a "left thumb down on something, drag & > drop something else with right index finger" from the "zoom pinch > gesture"? Heuristics I suppose... it's a good question.
signature.asc
Description: This is a digitally signed message part
_______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
