]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/combox.C
Bugfixes: checkboxes to radiobuttons (from J�rgen S) and remove a little
[lyx.git] / src / frontends / xforms / combox.C
index 9f1c54b79c32afece9e1f8961ee964ad3c041713..188b5cff716b80992f26489497ffaa5fcb2c233a 100644 (file)
@@ -43,9 +43,28 @@ using std::endl;
 
 // These are C wrappers around static members of Combox, used as
 // callbacks for xforms.
-extern "C" void C_Combox_input_cb(FL_OBJECT *ob, long);
-extern "C" void C_Combox_combo_cb(FL_OBJECT *ob, long data) ;
-extern "C" int C_Combox_peek_event(FL_FORM * form, void *xev);
+extern "C" {
+       
+       static
+       void C_Combox_input_cb(FL_OBJECT * ob, long data)
+       {
+               Combox::input_cb(ob, data);
+       }
+       
+       static
+       void C_Combox_combo_cb(FL_OBJECT * ob, long data) 
+       {
+               Combox::combo_cb(ob, data);
+       }
+       
+       static
+       int C_Combox_peek_event(FL_FORM * form, void *xev)
+       {
+               return Combox::peek_event(form, xev);
+       }
+
+}
+
 
 Combox::Combox(combox_type t)
        : type(t), tabfolder1(0), tabfolder2(0)
@@ -319,8 +338,6 @@ void Combox::hide(int who)
        }
         XUngrabPointer(fl_get_display(), 0);
        XFlush(fl_get_display());
-       if (!who && browser && label && callback)
-           callback(sel, cb_arg, this);
         if (form) {
                fl_hide_form(form);
                XSetInputFocus(fl_get_display(), save_window,
@@ -333,23 +350,39 @@ void Combox::hide(int who)
                        fl_redraw_object(button);
                }
        } 
+       if (!who && browser && label && callback)
+           callback(sel, cb_arg, this);
         if (_post) _post();
 }
 
 
 void Combox::activate()
 {
-       if (browser) fl_activate_object(browser);
-       if (button) fl_activate_object(button);
-       if (label) fl_activate_object(label);
+       if (browser)
+               fl_activate_object(browser);
+       if (button) {
+               fl_activate_object(button);
+               fl_set_object_lcol(button, FL_BLACK);
+       }
+       if (label) {
+               fl_activate_object(label);
+               fl_set_object_lcol(label, FL_BLACK);
+       }
 }
 
 
 void Combox::deactivate()
 {
-       if (browser) fl_deactivate_object(browser);
-       if (button) fl_deactivate_object(button);
-       if (label) fl_deactivate_object(label);
+       if (browser)
+               fl_deactivate_object(browser);
+       if (button) {
+               fl_deactivate_object(button);
+               fl_set_object_lcol(button, FL_INACTIVE);
+       }
+       if (label) {
+               fl_deactivate_object(label);
+               fl_set_object_lcol(label, FL_INACTIVE);
+       }
 }
 
 
@@ -364,12 +397,6 @@ void Combox::input_cb(FL_OBJECT * ob, long)
 }
 
 
-extern "C" void C_Combox_input_cb(FL_OBJECT * ob, long data)
-{
-  Combox::input_cb(ob, data);
-}
-
-
 void Combox::combo_cb(FL_OBJECT * ob, long data)
 {
        Combox * combo = static_cast<Combox*>(ob->u_vdata);
@@ -404,19 +431,13 @@ void Combox::combo_cb(FL_OBJECT * ob, long data)
        }
 }
 
-extern "C" void C_Combox_combo_cb(FL_OBJECT * ob, long data) 
-{
-       Combox::combo_cb(ob, data);
-}
-
 
 int Combox::peek_event(FL_FORM * form, void * xev)
 {
        FL_OBJECT * ob = static_cast<FL_OBJECT *>(form->u_vdata);
        Combox * combo = static_cast<Combox*>(ob->u_vdata);
        
-       // I don't know why belowmouse does not work, but it doesn't. (Asger)
-       // Are we sure? Please verify. (Lgb)
+       // below mouse does not work like we need it 
        if (static_cast<XEvent *>(xev)->type == ButtonPress && (
                static_cast<XEvent *>(xev)->xbutton.x - ob->x < 0 ||
                static_cast<XEvent *>(xev)->xbutton.x - ob->x > ob->w ||
@@ -474,11 +495,6 @@ int Combox::peek_event(FL_FORM * form, void * xev)
        }
        return 0;  
 }
-       
-extern "C" int C_Combox_peek_event(FL_FORM * form, void *xev)
-{
-       return Combox::peek_event(form, xev);
-}
 
 
 #ifdef TESTCOMBO