#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)
{
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);
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:
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;
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;
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);
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)
{
}
}
+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)
{
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:
return 0;
}
+extern "C" int C_Combox_peek_event(FL_FORM * form, void *xev)
+{
+ return Combox::peek_event(form, xev);
+}
+
#ifdef TESTCOMBO
typedef struct {