Great ! I am sure several people were looks for such an example. Thank you.

>
> On 7 Mar 2012, at 20:12, blue146 wrote:
>
> > The thing is that when it's a double click you will first print 1 and =
> then 2. Could you post an example that prints "single" when it's a =
> single click and only prints "double" (without printing "single" as =
> well) when it's a double-click ?
> >=20
>
> Sure, there are a couple of ways to go about that, but it turns out it's =
> often not really that useful, so there's no built-in way of doing it.
>
> You can easily do something with timeouts in the user-space, for =
> example, something like this will work.
>
> /*
> // Example: how to count clicks on a widget 03/07/12 (that's 2012-03-07 =
> for people who don't grok American date formats of course!)
> */
>
> #include <stdio.h>
> #include <stdint.h>
>
> #include <FL/Fl.H>
> #include <FL/Fl_Window.H>
>
> static void wait_click(void *v)
> {
>   intptr_t cc =3D (intptr_t)v;
>   int ic =3D (int)(cc & 0x0F) + 1;
>   printf("Number of clicks: %d\n", ic);
> }
>
> static void timer_extend(int cc)
> {
>   if(cc) Fl::remove_timeout(wait_click);
>   Fl::add_timeout(0.25, wait_click, (void*)cc);
> }
>
> class MyWindow : public Fl_Window {
> public:
>    MyWindow(int W,int H,const char *L=3D0) : Fl_Window(W,H,L) {
>    }
>    int handle(int e) {
>        switch (e) {
>              case FL_PUSH:
>                timer_extend(Fl::event_clicks());
>                break;
>        }
>        return(Fl_Window::handle(e));
>    }
> };
>
> int main() {
>    MyWindow win(300,200,"Counts clicks in window");
>    win.show();
>    return Fl::run();
> }
>
> /* end of file */
>
>

_______________________________________________
fltk mailing list
fltk@easysw.com
http://lists.easysw.com/mailman/listinfo/fltk

Reply via email to