xforms-development
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XForms] FL_BROWSER: different behaviour between 'left click' and 'slowl


From: Donato Lorenzo López
Subject: [XForms] FL_BROWSER: different behaviour between 'left click' and 'slowly left click'
Date: Fri, 16 Sep 2011 12:56:55 +0000

Hi,

                                                 S.O.:                          HP-UX B.11.31 U ia64 (td)
                                                 X Window version:   X11R6
                                                 XForms version:       xforms-1.0.93sp1

  I'm gonna try to explain it as short as possible!

  A program, wich has a FL_TABFOLDER. And a FL_BROWSER inside it. The FL_BROWSER has an own handler.
 
   Well, in the FL_BROWSER I insert a few lines (in its textbox, exactly), calling this functions:

fl_clear_browser()
while(/*reading data*/)
   fl_add_browser_line();

  Well, if I do (over the FL_BROWSER lines):

        a) Right click                                                   => It calls the FL_BROWSER's own handler. OK, perfect.
        b) Center click                                                 => It calls the FL_BROWSER's own handler. OK, perfect.
        c) Slow Left click (pressing one or two seconds) => It calls the FL_BROWSER's own handler. OK, perfect.
        d) Fast Left click                                              => It doesn't call the FL_BROWSER's own handler. Ohhh, why?.

The strange of the d) option it's that the line inside the FL_BROWSER get selected (it changes its colour)...

Well, I've been debuggin' a little bit, and I've seen the difference in the function FL_OBJECT * fli_object_qread( void ), of events.c.
 
First, it call the textbox callback:

    if ( obj->object_callback )
    {
        fli_handled_obj = obj;
        obj->object_callback( obj, obj->argument );
                 ====> It calls the funcion tbcb() in browser.c

And then it reads the parents:

    if ( obj->parent )
    {
        obj = obj->parent;
                ... (etc.)
        fli_handled_parent = obj;
        while ( fli_handled_parent )
        {
                ... (etc.)
      

And here is the difference.

When I do a), b) and c), it detects FL_BROWSER as parent and calls its handler.

But when I do d), it detects first the FL_TABFOLDER as parent, then FL_BROWSER. But it doen's call the callback, because the next 'if' is true:

    /* If we arrive here the original object either was a child object
       or it had no callback. Run either the parent callback or the forms
       callback (if there's one). */
    if ( ! obj->returned )
    {
        return NULL;
    }

------------------------------------------------------------------------------------------------------------------------------------

And I have the same problem in the FL_CHOICE objects, to see the list of elements you have to press left button like one second.

------------------------------------------------------------------------------------------------------------------------------------

Yeah, about this kind of error, the programmers we say: "the program works 99'9% fine". But users say "that's a serious problem, I cannot work this way" :))

I guess the problem is in X Window configuration, or something like that, outside the XForms. But maybe we got a way to solve the problem from the program source....

I've been trying playing with object's focus, moving things... but it's still present :(

Well, I hope you think something!

Thanks a lot!!













Donato
http://tiralledoaire.blogaliza.org/

reply via email to

[Prev in Thread] Current Thread [Next in Thread]