]> git.lyx.org Git - features.git/commitdiff
* Fix compilation with C89 compilers.
authorAngus Leeming <leeming@lyx.org>
Thu, 3 Apr 2003 09:21:11 +0000 (09:21 +0000)
committerAngus Leeming <leeming@lyx.org>
Thu, 3 Apr 2003 09:21:11 +0000 (09:21 +0000)
* Tell the world that these files belong to LyX.
* change function prototypes to use enums rather than ints.
* add FL_NORMAL_COMBOX to augment FL_DROPLIST_COMBOX.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@6698 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/xforms/ChangeLog
src/frontends/xforms/combox.c
src/frontends/xforms/combox.h
src/frontends/xforms/forms/fdfixc.sed
src/frontends/xforms/freebrowser.c
src/frontends/xforms/freebrowser.h

index 66a902fc6ffae009982c0a8d0559fdee92c25817..656d7052117e5c7271c1cf4a986354c1eca10b77 100644 (file)
@@ -1,3 +1,20 @@
+2003-04-03  Angus Leeming  <leeming@lyx.org>
+
+       * combox.[ch]: add an FL_NORMAL_COMBOX type.
+
+       * forms/fdfixc.sed: enable the use of both combox types.
+
+2003-04-03  Angus Leeming  <leeming@lyx.org>
+
+       * freebrowser.c (peek_event): write C89, not C99, code.
+
+       * combox.[ch]:
+       * freebrowser.[ch]: these files belong to LyX, so say so.
+
+       * combox.[ch] (fl_create_combox, fl_add_combox,
+       fl_set_combox_position): change the function prototypes to use enums
+       rather than ints.
+
 2003-04-02  Angus Leeming  <leeming@lyx.org>
 
        Rename some variables.
index 3dc9bea9c3b1968922b7f3252a0d13f4044b9d91..1cda3e0b1909d379d6edc92a8ece822a3e88a6da 100644 (file)
@@ -1,9 +1,13 @@
 /**
  * \file combox.c
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
  * \author Alejandro Aguilar Sierra
  * \author Angus Leeming
  *
+ * Full author contact details are available in file CREDITS
+ *
  * This is a rewrite of Alejandro's C++ Combox class, originally written
  * for LyX in 1996. The rewrite turns it into a native xforms widget.
  */
@@ -13,7 +17,6 @@
 #include "combox.h"
 #include "freebrowser.h"
 
-
 extern void fl_add_child(FL_OBJECT *, FL_OBJECT *);
 extern void fl_addto_freelist(void *);
 
@@ -61,7 +64,7 @@ static void set_state_label(COMBOX_SPEC * sp, int state);
 static void attrib_change(COMBOX_SPEC * sp);
 
 
-FL_OBJECT * fl_create_combox(int type,
+FL_OBJECT * fl_create_combox(FL_COMBOX_TYPE type,
                             FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h,
                             char const * label)
 {
@@ -73,6 +76,9 @@ FL_OBJECT * fl_create_combox(int type,
     FL_Coord const ws = 0.7 * h;
     FL_Coord const xs = x + w - ws;
 
+    /* The width of button_chosen */
+    FL_Coord const wc = (type == FL_DROPLIST_COMBOX) ? (w - ws) : w;
+
     ob = fl_make_object(FL_COMBOX, type, x, y, w, h, label, combox_handle);
     ob->align = FL_ALIGN_LEFT;
 
@@ -84,20 +90,23 @@ FL_OBJECT * fl_create_combox(int type,
     sp->browser = fl_create_freebrowser(sp);
     sp->browser->callback = update_button_chosen;
 
-    sp->button_state = fl_add_button(FL_NORMAL_BUTTON, xs, y, ws, h, "");
+    sp->button_state = 0;
+    if (type == FL_DROPLIST_COMBOX) {
+       sp->button_state = fl_add_button(FL_NORMAL_BUTTON, xs, y, ws, h, "");
 
-    button = sp->button_state;
-    fl_set_object_lalign(button, FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
-    fl_set_object_callback(button, state_cb, 0);
-    fl_set_object_posthandler(button, combox_post);
-    fl_set_object_prehandler(button,  combox_pre);
-    set_state_label(sp, COMBOX_CLOSED);
+       button = sp->button_state;
+       fl_set_object_lalign(button, FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
+       fl_set_object_callback(button, state_cb, 0);
+       fl_set_object_posthandler(button, combox_post);
+       fl_set_object_prehandler(button,  combox_pre);
+       set_state_label(sp, COMBOX_CLOSED);
 
-    set_activation(button, DEACTIVATE);
-    button->parent = ob;
-    button->u_vdata = sp;
+       set_activation(button, DEACTIVATE);
+       button->parent = ob;
+       button->u_vdata = sp;
+    }
 
-    sp->button_chosen = fl_add_button(FL_NORMAL_TEXT, x, y, (w - ws), h, "");
+    sp->button_chosen = fl_add_button(FL_NORMAL_TEXT, x, y, wc, h, "");
 
     button = sp->button_chosen;
     fl_set_object_boxtype(button, FL_FRAME_BOX);
@@ -113,14 +122,15 @@ FL_OBJECT * fl_create_combox(int type,
 }
 
 
-FL_OBJECT * fl_add_combox(int type,
+FL_OBJECT * fl_add_combox(FL_COMBOX_TYPE type,
                          FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h,
                          char const * label)
 {
     FL_OBJECT * ob = fl_create_combox(type, x, y, w, h, label);
     COMBOX_SPEC * sp = ob->spec;
 
-    fl_add_child(ob, sp->button_state);
+    if (sp->button_state)
+       fl_add_child(ob, sp->button_state);
     fl_add_child(ob, sp->button_chosen);
 
     fl_add_object(fl_current_form, ob);
@@ -140,7 +150,7 @@ void fl_set_combox_browser_height(FL_OBJECT * ob, int bh)
 }
 
 
-void fl_set_combox_position(FL_OBJECT * ob, int position)
+void fl_set_combox_position(FL_OBJECT * ob, FL_COMBOX_POSITION position)
 {
     COMBOX_SPEC * sp;
 
@@ -148,7 +158,7 @@ void fl_set_combox_position(FL_OBJECT * ob, int position)
        return;
 
     sp = ob->spec;
-    sp->browser_position = (position == FL_FREEBROWSER_ABOVE) ?
+    sp->browser_position = (position == FL_COMBOX_ABOVE) ?
        FL_FREEBROWSER_ABOVE : FL_FREEBROWSER_BELOW;
 
     set_state_label(sp, COMBOX_CLOSED);
@@ -207,7 +217,8 @@ void fl_addto_combox(FL_OBJECT * ob, char const * text)
     if (!fl_get_browser(browser)) {
        fl_set_object_label(sp->button_chosen, text);
        set_activation(sp->button_chosen, ACTIVATE);
-       set_activation(sp->button_state,  ACTIVATE);
+       if (sp->button_state)
+           set_activation(sp->button_state,  ACTIVATE);
     }
 }
 
@@ -431,6 +442,10 @@ static void set_state_label(COMBOX_SPEC * sp, int state)
     char const * const up   = "@2<-";
     char const * const down = "@2->";
     char const * label = 0;
+
+    if (!sp->button_state)
+       return;
+
     if (sp->browser_position == FL_FREEBROWSER_BELOW) {
        label = (state == COMBOX_OPEN) ? up : down;
     } else {
@@ -451,10 +466,12 @@ static void attrib_change(COMBOX_SPEC * sp)
     button->col2    = parent->col2;
     button->bw      = parent->bw;
 
-    button = sp->button_state;
+    if (sp->button_state) {
+       button = sp->button_state;
 
-    /* The boxtype is not changed */
-    button->col1    = parent->col1;
-    button->col2    = parent->col2;
-    button->bw      = parent->bw;
+       /* The boxtype is not changed */
+       button->col1    = parent->col1;
+       button->col2    = parent->col2;
+       button->bw      = parent->bw;
+    }
 }
index 50cdb6aa8c0ffe535604c3a0d457f696c581e4b6..eda47bb4cdd5ff153004f6f1ef4d7d1dadbb4b55 100644 (file)
@@ -1,7 +1,12 @@
 /**
  * \file combox.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
  * \author Angus Leeming
  *
+ * Full author contact details are available in file CREDITS
+ *
  * A combination of two objects (a button and a browser) is encapsulated to
  * get a combobox-like object.
  */
@@ -20,10 +25,17 @@ enum {
     FL_COMBOX = 200
 };
 
-/** The types of combox. At the moment, there's only one. */
-enum {
+/** The various types of combox. */
+typedef enum {
+    FL_NORMAL_COMBOX,
     FL_DROPLIST_COMBOX
-};
+} FL_COMBOX_TYPE;
+
+/** How the browser should be displayed relative to the buttons. */
+typedef enum {
+    FL_COMBOX_BELOW,
+    FL_COMBOX_ABOVE
+} FL_COMBOX_POSITION;
 
 /** A function to create a combox widget.
  *  \param type is, as yet, unused. there is only one type of combox.
@@ -33,14 +45,16 @@ enum {
  *  \param label: the widget's label as it appears on the GUI.
  */
 FL_EXPORT FL_OBJECT *
-fl_create_combox(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h,
+fl_create_combox(FL_COMBOX_TYPE type,
+                FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h,
                 char const * label);
 
 /** A function to create a combox widget and add it to the parent form.
  *  \see fl_create_combox() for an explanation of the argument list.
  */
 FL_EXPORT FL_OBJECT *
-fl_add_combox(int type, FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h,
+fl_add_combox(FL_COMBOX_TYPE type,
+             FL_Coord x, FL_Coord y, FL_Coord w, FL_Coord h,
              char const * label);
 
 /** The combox browser has a default height of 100 pixels. Adjust to suit. */
@@ -49,7 +63,8 @@ FL_EXPORT void fl_set_combox_browser_height(FL_OBJECT * ob, int bh);
 /** The browser will be displayed either below or above the button,
  *  dependent upon \param position.
  */
-FL_EXPORT void fl_set_combox_position(FL_OBJECT * ob, int position);
+FL_EXPORT void fl_set_combox_position(FL_OBJECT * ob, 
+                                     FL_COMBOX_POSITION position);
 
 /** Empty the browser and the combox, \param ob. */
 FL_EXPORT void fl_clear_combox(FL_OBJECT * ob);
index b2db372ac7c294995732341976779026cfe15117..9171accce7c750fb91226c466a8db5056c264112 100644 (file)
@@ -76,7 +76,13 @@ s/\( fdui->form\)\(.*bgn_form.*\)/\1\2\
 
 # For all lines containing "combox",
 # replace "fl_add_choice" with "fl_add_combox"
-/combox/ s/fl_add_choice([^,]*/fl_add_combox(FL_DROPLIST_COMBOX/
+# Note that only two combox types exist, whilst there are four choice types.
+/combox/ {
+s/fl_add_choice/fl_add_combox/
+s/BROWSER/NORMAL/
+s/CHOICE2/COMBOX/
+s/CHOICE/COMBOX/
+}
 
 
 # For all lines containing fl_add_choice,
index 0ab13e7b3616d853034e8a957dcd64a5214e2275..3db52a09f535eeda34ee8c7495498acab38e08d1 100644 (file)
@@ -1,9 +1,13 @@
 /**
  * \file freebrowser.c
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
  * \author Alejandro Aguilar Sierra
  * \author Angus Leeming
  *
+ * Full author contact details are available in file CREDITS
+ *
  * This is a rewrite of Alejandro's C++ Combox class, originally written
  * for LyX in 1996. The rewrite turns it into a native xforms widget.
  */
@@ -16,7 +20,6 @@
 extern void fl_hide_tooltip(void);
 
 static void browser_cb(FL_OBJECT * ob, long data);
-
 static int peek_event(FL_FORM * form, void * xev);
 
 
@@ -147,8 +150,9 @@ static int peek_event(FL_FORM * form, void * ev)
     }
 
     if (xev->type == KeyPress) {
-       char s_r[10]; s_r[9] = '\0';
        KeySym keysym_return;
+       char s_r[10];
+       s_r[9] = '\0';
        XLookupString(&xev->xkey, s_r, 10, &keysym_return, 0);
 
        XFlush(fl_get_display());
index a7d7a72753f38f93d0aacc5073ee26a32241fdde..69ef628d61a0c6d09d4924a88b1225721a4215c0 100644 (file)
@@ -1,7 +1,12 @@
 /**
  * \file freebrowser.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
  * \author Angus Leeming
  *
+ * Full author contact details are available in file CREDITS
+ *
  * A freebrowser is a browser widget in its own form.
  * It is used for example to instantiate the drop-down list beneath a
  * combox.
@@ -15,10 +20,10 @@ extern "C"
 {
 #endif
 
-enum freebrowser_position {
+typedef enum {
     FL_FREEBROWSER_BELOW,
     FL_FREEBROWSER_ABOVE
-};
+} FL_FREEBROWSER_POSITION;
 
 typedef struct fl_freebrowser_ {
     /** Use this and you'll be told when something happens.