]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/xforms/FeedbackController.C
ws fixes, formatting and some other small changes
[lyx.git] / src / frontends / xforms / FeedbackController.C
index 16b6ebf9bd7ccf6e3fbd7e6b5af9cd939435384e..01dcc2bf29e083844916663ace4b0bc1942ad734 100644 (file)
@@ -80,18 +80,21 @@ void FeedbackController::PrehandlerCB(FL_OBJECT * ob, int event, int key)
                // using the middle mouse button.
                InputCB(ob, 0);
                
-       // This is very odd:
-       // event == FL_LEAVE when the mouse enters the folder and
-       // event == FL_ENTER are it leaves!
-       } else if (ob->objclass == FL_TABFOLDER && event == FL_LEAVE) {
-               // This prehandler is used to work-around an xforms bug.
-               // It updates the form->x, form->y coords of the active
-               // tabfolder when the mouse enters.
-               FL_FORM * const form = fl_get_active_folder(ob);
-               Window win = fl_prepare_form_window(form, 0, 0, "Folder");
-               if (win) {
-                       FL_Coord w, h;
-                       fl_get_wingeometry(win, &(form->x), &(form->y), &w, &h);
+       } else if (ob->objclass == FL_TABFOLDER &&
+                  (event == FL_ENTER || event == FL_LEAVE)) {
+               // This prehandler is used to work-around an xforms bug and
+               // ensures that the form->x, form->y coords of the active
+               // tabfolder are up to date.
+
+               // The tabfolder itself can be very narrow, being just
+               // the visible border to the tabs.
+               // We thus use both FL_ENTER and FL_LEAVE as flags,
+               // in case the FL_ENTER event is not caught.
+
+               FL_FORM * const folder = fl_get_active_folder(ob);
+               if (folder && folder->window) {
+                       fl_get_winorigin(folder->window,
+                                        &(folder->x), &(folder->y));
                }
 
        } else if (message_widget_ &&