X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fxforms%2FFeedbackController.C;h=01dcc2bf29e083844916663ace4b0bc1942ad734;hb=ce708d095c65866617424f940c1dac6b7e236d61;hp=2e8ada7e0602375dd3d60deaf025300c09f7b8dc;hpb=30180184cdf0ad89dff4efe1e8afed6df1dc725d;p=lyx.git diff --git a/src/frontends/xforms/FeedbackController.C b/src/frontends/xforms/FeedbackController.C index 2e8ada7e06..01dcc2bf29 100644 --- a/src/frontends/xforms/FeedbackController.C +++ b/src/frontends/xforms/FeedbackController.C @@ -1,9 +1,11 @@ /** * \file FeedbackController.C - * Copyright 2002 the LyX Team - * Read the file COPYING + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. * - * \author Angus Leeming, a.leeming@ic.ac.uk + * \author Angus Leeming + * + * Full author contact details are available in file CREDITS */ /* A common interface for posting feedback messages to a message widget in @@ -22,6 +24,7 @@ #include "gettext.h" // _() #include "xforms_helpers.h" // formatted #include "support/LAssert.h" +#include FORMS_H_LOCATION FeedbackController::FeedbackController() : warning_posted_(false), message_widget_(0) @@ -70,10 +73,29 @@ void FeedbackController::MessageCB(FL_OBJECT * ob, int event) void FeedbackController::PrehandlerCB(FL_OBJECT * ob, int event, int key) { - if (event == FL_PUSH && key == 2 && ob->objclass == FL_INPUT) { + lyx::Assert(ob); + + if (ob->objclass == FL_INPUT && event == FL_PUSH && key == 2) { // Trigger an input event when pasting in an xforms input object // using the middle mouse button. InputCB(ob, 0); + + } 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_ && (event == FL_ENTER || event == FL_LEAVE)) {