X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFeedbackController.C;h=01dcc2bf29e083844916663ace4b0bc1942ad734;hb=ce708d095c65866617424f940c1dac6b7e236d61;hp=f639c12c4c0510dc3333c21559cd01a0e24eb6b1;hpb=ddfef28e296dde1058a02b1a2e1c8d5baa386e59;p=lyx.git diff --git a/src/frontends/xforms/FeedbackController.C b/src/frontends/xforms/FeedbackController.C index f639c12c4c..01dcc2bf29 100644 --- a/src/frontends/xforms/FeedbackController.C +++ b/src/frontends/xforms/FeedbackController.C @@ -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); - if (form->window) { - FL_Coord w, h; - fl_get_wingeometry(form->window, - &(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_ &&