>>>>> "Angus" == Angus Leeming <[EMAIL PROTECTED]> writes:
Angus> Sure and sure. I showed you the logic path. The behaviour is Angus> just a natural result of same. OK, I have to admit that you were right :) Here is the patch I came up with. Lars, is it OK? I have opened a bug for that at: http://bugzilla.lyx.org/show_bug.cgi?id=1950 JMarc
Index: src/frontends/controllers/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ChangeLog,v retrieving revision 1.489 diff -u -p -r1.489 ChangeLog --- src/frontends/controllers/ChangeLog 27 Jul 2005 15:22:05 -0000 1.489 +++ src/frontends/controllers/ChangeLog 27 Jul 2005 22:45:01 -0000 @@ -1,3 +1,15 @@ +2005-07-28 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + bug 1950. + + * Dialog.h (exitEarly): virtual function, returns false as a + default. + + * ControlSpellchecker.h (exitEarly): return exitEarly_ + + * ControlSpellchecker.C (check): set exitEarly_ to true when + spell-checking is finished, false otherwise. + 2005-07-27 Jürgen Spitzmüller <[EMAIL PROTECTED]> * ControlToc.[Ch]: getGuiName takes a type argument now. Index: src/frontends/controllers/ControlSpellchecker.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlSpellchecker.C,v retrieving revision 1.82 diff -u -p -r1.82 ControlSpellchecker.C --- src/frontends/controllers/ControlSpellchecker.C 3 May 2005 22:24:43 -0000 1.82 +++ src/frontends/controllers/ControlSpellchecker.C 27 Jul 2005 22:45:01 -0000 @@ -54,7 +54,7 @@ namespace frontend { ControlSpellchecker::ControlSpellchecker(Dialog & parent) - : Dialog::Controller(parent), + : Dialog::Controller(parent), exit_early_(false), oldval_(0), newvalue_(0), count_(0) {} @@ -202,6 +202,7 @@ void ControlSpellchecker::check() ++start; BufferParams & bufferparams = kernel().buffer().params(); + exitEarly_ = false; while (res == SpellBase::OK || res == SpellBase::IGNORED_WORD) { word_ = nextWord(cur, start, bufferparams); @@ -209,6 +210,7 @@ void ControlSpellchecker::check() // end of document if (getWord().empty()) { showSummary(); + exitEarly_ = true; return; } Index: src/frontends/controllers/ControlSpellchecker.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/ControlSpellchecker.h,v retrieving revision 1.22 diff -u -p -r1.22 ControlSpellchecker.h --- src/frontends/controllers/ControlSpellchecker.h 19 May 2004 15:11:30 -0000 1.22 +++ src/frontends/controllers/ControlSpellchecker.h 27 Jul 2005 22:45:01 -0000 @@ -40,6 +40,8 @@ public: virtual void dispatchParams() {} /// virtual bool isBufferDependent() const { return true; } + /// + virtual bool exitEarly() const { return exitEarly_; } /// replace word with replacement void replace(std::string const &); @@ -75,6 +77,10 @@ private: /// show count of checked words at normal exit void showSummary(); + +private: + /// set to true when spellchecking is finished + bool exitEarly_; /// current word being checked and lang code WordLangTuple word_; Index: src/frontends/controllers/Dialog.h =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/controllers/Dialog.h,v retrieving revision 1.15 diff -u -p -r1.15 Dialog.h --- src/frontends/controllers/Dialog.h 26 Apr 2005 09:37:52 -0000 1.15 +++ src/frontends/controllers/Dialog.h 27 Jul 2005 22:45:01 -0000 @@ -186,6 +186,12 @@ public: * return true. */ virtual bool disconnectOnApply() const { return false; } + + /** \return true if Dialog::View::show() should not display the dialog + * after running update. Currently, only ControlSpellchecker + * makes use of that. + */ + virtual bool exitEarly() const { return false; } //@} protected: Index: src/frontends/gtk/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/gtk/ChangeLog,v retrieving revision 1.128 diff -u -p -r1.128 ChangeLog --- src/frontends/gtk/ChangeLog 27 Jul 2005 15:22:06 -0000 1.128 +++ src/frontends/gtk/ChangeLog 27 Jul 2005 22:45:01 -0000 @@ -1,3 +1,8 @@ +2005-07-28 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + * GViewBase.C (show): exit after update if Controller::exitEarly() + is true. (bug 1950) + 2005-07-27 Jürgen Spitzmüller <[EMAIL PROTECTED]> * GToc.C (update, updateContents): Do not compare against Index: src/frontends/gtk/GViewBase.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/gtk/GViewBase.C,v retrieving revision 1.14 diff -u -p -r1.14 GViewBase.C --- src/frontends/gtk/GViewBase.C 29 Jan 2005 15:09:14 -0000 1.14 +++ src/frontends/gtk/GViewBase.C 27 Jul 2005 22:45:01 -0000 @@ -62,6 +62,9 @@ void GViewBase::show() build(); } update(); + if (dialog().controller().exitEarly()) + return; + window()->show(); } Index: src/frontends/qt2/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/ChangeLog,v retrieving revision 1.813 diff -u -p -r1.813 ChangeLog --- src/frontends/qt2/ChangeLog 27 Jul 2005 17:11:17 -0000 1.813 +++ src/frontends/qt2/ChangeLog 27 Jul 2005 22:45:01 -0000 @@ -1,3 +1,8 @@ +2005-07-28 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + * QDialogView.C (show): exit after update if Controller::exitEarly() + is true. (bug 1950) + 2005-07-27 Jürgen Spitzmüller <[EMAIL PROTECTED]> * QToc.C (update_contents): fix missing qstring->string translation. Index: src/frontends/qt2/QDialogView.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QDialogView.C,v retrieving revision 1.12 diff -u -p -r1.12 QDialogView.C --- src/frontends/qt2/QDialogView.C 12 May 2005 23:12:42 -0000 1.12 +++ src/frontends/qt2/QDialogView.C 27 Jul 2005 22:45:02 -0000 @@ -51,6 +51,8 @@ void QDialogView::show() form()->setMinimumSize(form()->sizeHint()); update(); // make sure its up-to-date + if (dialog().controller().exitEarly()) + return; form()->setCaption(toqstr("LyX: " + getTitle())); Index: src/frontends/xforms/ChangeLog =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/ChangeLog,v retrieving revision 1.1000 diff -u -p -r1.1000 ChangeLog --- src/frontends/xforms/ChangeLog 27 Jul 2005 15:22:06 -0000 1.1000 +++ src/frontends/xforms/ChangeLog 27 Jul 2005 22:45:02 -0000 @@ -1,3 +1,8 @@ +2005-07-28 Jean-Marc Lasgouttes <[EMAIL PROTECTED]> + + * FormDialogView.C (show): exit after update if Controller::exitEarly() + is true. (bug 1950) + 2005-07-27 Jürgen Spitzmüller <[EMAIL PROTECTED]> * FormToc.C (updateType, update_contents): Do not compare against Index: src/frontends/xforms/FormDialogView.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/FormDialogView.C,v retrieving revision 1.18 diff -u -p -r1.18 FormDialogView.C --- src/frontends/xforms/FormDialogView.C 19 May 2004 15:11:35 -0000 1.18 +++ src/frontends/xforms/FormDialogView.C 27 Jul 2005 22:45:02 -0000 @@ -145,6 +145,8 @@ void FormDialogView::show() fl_freeze_form(form()); update(); fl_unfreeze_form(form()); + if (dialog().controller().exitEarly()) + return; if (form()->visible) { fl_raise_form(form());