[PATCH 2/2] clients: Maximize window when double touch on title bar

Steven Newbury steve at snewbury.org.uk
Tue Sep 9 06:20:39 PDT 2014


On Tue, 2014-09-09 at 10:06 +0300, Pekka Paalanen wrote:
> On Tue, 9 Sep 2014 06:14:34 +0000
> "Zhang, Xiong Y" zhang at intel.com> wrote:
> 
> >  On Thu, 12 Jun 2014 11:06:26 +0800
> >  Xiong Zhang zhang at intel.com> wrote:
> > 
> > >  Signed-off-by: Xiong Zhang zhang at intel.com>
> > >  ---
> > >   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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part
URL: <http://lists.freedesktop.org/archives/wayland-devel/attachments/20140909/47af57ba/attachment-0001.sig>


More information about the wayland-devel mailing list