From 03b652c9b80a08968c05f53735693f405fa04d11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrgen=20Spitzm=C3=BCller?= Date: Tue, 30 Sep 2008 08:41:37 +0000 Subject: [PATCH] * InsetInclude.cpp: - fix duplicate check of listings labels. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@26635 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/insets/InsetInclude.cpp | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index 5d84f0e03f..94002877fa 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -236,13 +236,23 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd) if (!p.getCmdName().empty()) { if (isListings(p)){ InsetListingsParams new_params(to_utf8(p["lstparams"])); - docstring const label_str = from_utf8(new_params.getParamValue("label")); - if (label_str.empty()) + docstring const new_label = + from_utf8(new_params.getParamValue("label")); + docstring old_label; + if (label_) + old_label = label_->getParam("name"); + if (new_label.empty()) delete label_; - else if (label_) - label_->updateCommand(label_str); - else { - label_ = createLabel(label_str); + else if (label_ && old_label != new_label) { + label_->updateCommand(new_label); + // the label might have been adapted (duplicate) + if (new_label != label_->getParam("name")) { + new_params.addParam("label", + "{" + to_utf8(label_->getParam("name")) + "}"); + p["lstparams"] = from_utf8(new_params.params()); + } + } else if (old_label != new_label) { + label_ = createLabel(new_label); label_->setBuffer(buffer()); label_->initView(); }