? build ? fselect.diff ? xforms.fselect2.diff Index: ChangeLog =================================================================== RCS file: /cvsroot/xforms/xforms/ChangeLog,v retrieving revision 1.94 diff -u -p -r1.94 ChangeLog --- ChangeLog 5 May 2004 12:06:51 -0000 1.94 +++ ChangeLog 5 May 2004 13:45:45 -0000 @@ -1,3 +1,8 @@ +2004-05-05 Mike Heffner + + * lib/fselect.c (select_cb): clean-up and simplify this callback + function by use of the existing fl_set_browser_dblclick_callback. + 2004-05-04 Angus Leeming The original patch, posted to the xforms list on June 21, 2002, Index: lib/fselect.c =================================================================== RCS file: /cvsroot/xforms/xforms/lib/fselect.c,v retrieving revision 1.9 diff -u -p -r1.9 fselect.c --- lib/fselect.c 13 Nov 2003 21:56:02 -0000 1.9 +++ lib/fselect.c 5 May 2004 13:45:45 -0000 @@ -313,24 +313,18 @@ select_cb(FL_OBJECT * ob, long arg) } return 0; } + #else -/* - * A file is selected from the browser. - * generate ready if valid selection (e.g. double-clicked) - * Note that if a call back is defined, never generate ready - */ + static void -select_cb(FL_OBJECT * ob, long arg) +select_cb(FL_OBJECT *ob, long isdblclick) { int dir; char seltext[FL_PATH_MAX]; - static int lastline = -1, clicked; - int dblclick, thisline; + int thisline; FD_fselect *lfs = ob->form->fdui; - const XEvent *xev = fl_last_event(); thisline = fl_get_browser(ob); - if (thisline <= 0) return; @@ -340,31 +334,9 @@ select_cb(FL_OBJECT * ob, long arg) strcpy(seltext, seltext + 2); - dblclick = (lastline == thisline && clicked && - fl_time_passed(FL_FS_T) < ob->click_timeout * 0.001f); - - lastline = thisline; - - clicked = (clicked || xev->type == ButtonPress); - - /* cursor keys can cause a single line being repeatedly selected - causing a wrong dblclick detection */ - - if (clicked) - { - if (xev->type == KeyPress || xev->type == KeyRelease) - { - dblclick = 0; - clicked = 0; - lastline = -1; - } - } - - fl_reset_time(FL_FS_T); - if (dir) { - if (dblclick) + if (isdblclick) { strcat(append_slash(lfs->dname), seltext); fl_fix_dirname(lfs->dname); @@ -379,7 +351,7 @@ select_cb(FL_OBJECT * ob, long arg) fl_set_input(lfs->input, seltext); strcpy(lfs->filename, seltext); - if (dblclick) + if (isdblclick) { if (lfs->fselect_cb) { @@ -390,7 +362,6 @@ select_cb(FL_OBJECT * ob, long arg) fl_object_qenter(lfs->ready); } } - return; } #endif @@ -969,6 +940,7 @@ create_form_fselect(void) fs->browser = obj = fl_add_browser(FL_HOLD_BROWSER, 15, 80, 185, 180, ""); #if ATTACHABLE fl_set_object_callback(obj, select_cb, 0); + fl_set_browser_dblclick_callback(obj, select_cb, 1); #endif fl_set_object_gravity(obj, NorthWestGravity, SouthEastGravity); obj->click_timeout = FL_CLICK_TIMEOUT;