]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/combox.c
Change glob() API to accept a dir parameter.
[lyx.git] / src / frontends / xforms / combox.c
index b13a2c73eabe814a738714712c2def8823911ea3..05e270f111c0f8e182282e5960de12578f9fdb30 100644 (file)
@@ -15,7 +15,7 @@
  */
 #include <config.h>
 
-#include FORMS_H_LOCATION
+#include "lyx_forms.h"
 #include "combox.h"
 #include "freebrowser.h"
 
@@ -374,10 +374,32 @@ combox_handle(FL_OBJECT * ob, int event, FL_Coord mx, FL_Coord my, int key,
     case FL_DRAW:
        attrib_change(ob->spec);
        /* Fall through */
-    case FL_DRAWLABEL:
+    case FL_DRAWLABEL: {
+       COMBOX_SPEC * sp = ob->spec;
+
+       int change =
+           ob->x != sp->button_chosen->x ||
+           ob->y != sp->button_chosen->y;
+
+       FL_Coord xbs = 0;
+       if (sp->button_state) {
+           xbs = ob->x + (sp->button_state->x - sp->button_chosen->x);
+           change = change ||
+               xbs   != sp->button_state->x ||
+               ob->y != sp->button_state->y;
+       }
+
+       if (change) {
+           fl_freeze_form(ob->form);
+           fl_set_object_position(sp->button_chosen, ob->x, ob->y);
+           if (sp->button_state)
+               fl_set_object_position(sp->button_state, xbs, ob->y);
+           fl_unfreeze_form(ob->form);
+       }
+
        fl_draw_object_label(ob);
-       break;
-    case FL_SHORTCUT:
+       break;
+    case FL_SHORTCUT:
        show_browser(ob->spec);
        break;
     case FL_FREEMEM: {