From cce8004c07595467fff4b87c0b1a289a8583000a Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Thu, 24 Oct 2002 15:03:04 +0000 Subject: [PATCH] =?utf8?q?Fix=20Andr=EF=BF=BD's=20highlighted=20browser=20?= =?utf8?q?bug.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@5501 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/xforms/ChangeLog | 7 +++++ src/frontends/xforms/FormRef.C | 49 +++++++++++++++++++++------------- 2 files changed, 38 insertions(+), 18 deletions(-) diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index 651eadb1a0..17319737f6 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,10 @@ +2002-10-24 Angus Leeming + + * FormRef.C (updateBrowser): invoke updateHighlight + (updateHighlight): don't select a browser item if there is no + reference selected. + (apply, input): use getString not fl_get_input. + 2002-10-23 Jean-Marc Lasgouttes * FormExternal.C (apply): diff --git a/src/frontends/xforms/FormRef.C b/src/frontends/xforms/FormRef.C index 7ddbeab3f6..672c24cfa1 100644 --- a/src/frontends/xforms/FormRef.C +++ b/src/frontends/xforms/FormRef.C @@ -136,6 +136,28 @@ void FormRef::update() } +namespace { + +void updateHighlight(FL_OBJECT * browser, + vector const & keys, + string const & ref) +{ + vector::const_iterator cit = (ref.empty()) + ? keys.end() + : find(keys.begin(), keys.end(), ref); + + if (cit == keys.end()) { + fl_deselect_browser(browser); + } else { + int const i = static_cast(cit - keys.begin()); + fl_set_browser_topline(browser, max(i-5, 1)); + fl_select_browser_line(browser, i+1); + } +} + +} // namespace anon + + void FormRef::updateBrowser(vector const & akeys) const { vector keys(akeys); @@ -144,8 +166,11 @@ void FormRef::updateBrowser(vector const & akeys) const vector browser_keys = getVector(dialog_->browser_refs); - if (browser_keys == keys) + if (browser_keys == keys) { + updateHighlight(dialog_->browser_refs, keys, + getString(dialog_->input_ref)); return; + } fl_clear_browser(dialog_->browser_refs); for (vector::const_iterator it = keys.begin(); @@ -164,20 +189,8 @@ void FormRef::updateBrowser(vector const & akeys) const setEnabled(dialog_->browser_refs, true); setEnabled(dialog_->check_sort, true); - string ref = fl_get_input(dialog_->input_ref); - vector::const_iterator cit = (ref.empty()) - ? keys.begin() - : find(keys.begin(), keys.end(), ref); - if (cit == keys.end()) { - fl_deselect_browser(dialog_->browser_refs); - } else { - if (ref.empty()) - fl_set_input(dialog_->input_ref, cit->c_str()); - - int const i = static_cast(cit - keys.begin()); - fl_set_browser_topline(dialog_->browser_refs, max(i-5, 1)); - fl_select_browser_line(dialog_->browser_refs, i+1); - } + updateHighlight(dialog_->browser_refs, keys, + getString(dialog_->input_ref)); } } @@ -187,8 +200,8 @@ void FormRef::apply() int const type = fl_get_choice(dialog_->choice_format) - 1; controller().params().setCmdName(InsetRef::getName(type)); - controller().params().setOptions(fl_get_input(dialog_->input_name)); - controller().params().setContents(fl_get_input(dialog_->input_ref)); + controller().params().setOptions(getString(dialog_->input_name)); + controller().params().setContents(getString(dialog_->input_ref)); } @@ -204,7 +217,7 @@ ButtonPolicy::SMInput FormRef::input(FL_OBJECT * ob, long) at_ref_ = !at_ref_; if (at_ref_) { - controller().gotoRef(fl_get_input(dialog_->input_ref)); + controller().gotoRef(getString(dialog_->input_ref)); } else { controller().gotoBookmark(); } -- 2.39.2