]> git.lyx.org Git - lyx.git/blobdiff - src/combox.C
removed a warning from screen and added CFLAGS in lyx.spec.in.
[lyx.git] / src / combox.C
index 6c3b435f8986ace5d1cc6b540bcc03a91ec9d320..f51f700c676a26e7d9ceb1f48eaa1b038319797a 100644 (file)
 #endif
 
 #include "combox.h"
-#include <string.h>
+#include <cstring>
 
-#include "error.h"
-
-//     $Id: combox.C,v 1.1 1999/09/27 18:44:37 larsbj Exp $    
-
-#if !defined(lint) && !defined(WITH_WARNINGS)
-static char vcid[] = "$Id: combox.C,v 1.1 1999/09/27 18:44:37 larsbj Exp $";
-#endif /* lint */
+#include "debug.h"
 
+// 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);
 
 Combox::Combox(combox_type t): type(t)
 {
@@ -80,20 +79,20 @@ void Combox::clear()
 
 void Combox::remove()
 {
-       //lyxerr.print(LString("Button: ") + int(button));
+       lyxerr.debug() << "Button: " << button << endl;
        if (button) {
                fl_delete_object(button);
                fl_free_object(button); 
        }
        
-       //lyxerr.print(LString("Label: ") + int(label));
+       lyxerr.debug() << "Label: " << label << endl;
        if (label && label!=button) {
                fl_delete_object(label);
                fl_free_object(label); 
        }
        
-       //lyxerr.print(LString("Form: ") + int(form));
-       //lyxerr.print(LString("Browser: ") + int(browser));
+       lyxerr.debug() << "Form: " << form << endl;
+       lyxerr.debug() << "Browser: " << browser << endl;
        if (form && browser) {
           fl_delete_object(browser);
           fl_free_object(browser);
@@ -163,13 +162,13 @@ void Combox::add(int x, int y, int w, int hmin, int hmax)
                                             x+w-22,y,22,hmin,"@2->");
                fl_set_object_color(obj,FL_MCOL, FL_MCOL);
                fl_set_object_dblbuffer(obj, 1);
-               fl_set_object_callback(obj,combo_cb,0);
+               fl_set_object_callback(obj,C_Combox_combo_cb,0);
                label = obj = fl_add_button(FL_NORMAL_TEXT,x,y,w-22,hmin,"");
                fl_set_object_boxtype(obj,FL_DOWN_BOX);
                fl_set_object_color(obj,FL_MCOL,FL_BLACK);
                fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                fl_set_object_dblbuffer(obj, 1);
-               fl_set_object_callback(obj,combo_cb,0);
+               fl_set_object_callback(obj,C_Combox_combo_cb,0);
                break;
        }
        case FL_COMBOX_NORMAL:
@@ -177,7 +176,7 @@ void Combox::add(int x, int y, int w, int hmin, int hmax)
                button = obj = fl_add_button(FL_NORMAL_BUTTON,x,y,w,hmin,"");
                fl_set_object_color(obj,FL_MCOL, FL_MCOL);
                fl_set_object_boxtype(obj,FL_DOWN_BOX);
-               fl_set_object_callback(obj,combo_cb,0);
+               fl_set_object_callback(obj,C_Combox_combo_cb,0);
                fl_set_object_color(obj,FL_MCOL,FL_BLACK);
                label = button;
                break;
@@ -187,11 +186,11 @@ void Combox::add(int x, int y, int w, int hmin, int hmax)
                button = obj = fl_add_button(FL_NORMAL_BUTTON,
                                             x+w-22,y,22,hmin,"@2->");
                fl_set_object_color(obj,FL_MCOL, FL_MCOL);
-               fl_set_object_callback(obj,combo_cb,0);
+               fl_set_object_callback(obj,C_Combox_combo_cb,0);
                label = obj = fl_add_input(FL_NORMAL_INPUT,x,y,w-22,hmin,"");
                fl_set_object_boxtype(obj,FL_DOWN_BOX);
                fl_set_object_return(obj, FL_RETURN_END_CHANGED);
-               fl_set_object_callback(obj,input_cb,0);
+               fl_set_object_callback(obj,C_Combox_input_cb,0);
                //fl_set_object_color(obj,FL_MCOL,FL_BLACK);
                //fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
                break;
@@ -215,11 +214,13 @@ void Combox::add(int x, int y, int w, int hmin, int hmax)
        fl_set_object_boxtype(obj,FL_UP_BOX);
        fl_set_object_color(obj,FL_MCOL, FL_YELLOW);
        fl_set_object_gravity(obj, NorthWestGravity, NorthWestGravity);
-       fl_set_object_callback(obj,combo_cb,2);
+       fl_set_object_callback(obj,C_Combox_combo_cb,2);
        fl_end_form();
        browser->u_vdata = (void*)this;
        form->u_vdata = browser;
-       fl_register_raw_callback(form, ButtonPressMask|KeyPressMask,peek_event);
+       fl_register_raw_callback(form, 
+                                ButtonPressMask|KeyPressMask,
+                                C_Combox_peek_event);
 
        // And revert to adding to the old form (Asger)
        fl_addto_form(current_form);
@@ -316,6 +317,11 @@ void Combox::input_cb(FL_OBJECT *ob, long)
        combo->is_empty = false;
 }
 
+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)
 {
@@ -351,6 +357,11 @@ 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)
 {
@@ -379,7 +390,7 @@ int Combox::peek_event(FL_FORM * form, void *xev)
        static int num_bytes;
        KeySym keysym_return;
        num_bytes = XLookupString(&((XEvent*)xev)->xkey, s_r, 10, 
-                                 &keysym_return, NULL);
+                                 &keysym_return, 0);
        XFlush(fl_display);
        switch (keysym_return) {
        case XK_Down:
@@ -423,6 +434,11 @@ 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
 typedef struct {