]> git.lyx.org Git - features.git/commitdiff
Fix bug 5787-part_2 (Labels in Listings Children Don't Update Properly).
authorVincent van Ravesteijn <vfr@lyx.org>
Thu, 19 Feb 2009 21:33:07 +0000 (21:33 +0000)
committerVincent van Ravesteijn <vfr@lyx.org>
Thu, 19 Feb 2009 21:33:07 +0000 (21:33 +0000)
It was still possible to set the label of an included Program Listing to an already existing label (if there was no label specified yet).

See also:
http://www.lyx.org/trac/changeset/28556

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28564 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/InsetInclude.cpp

index 1814c235e39cf723908a716c3972f5052ea369f8..c09d272f4745dddb33da6d9842f1623548279b78 100644 (file)
@@ -241,24 +241,28 @@ void InsetInclude::doDispatch(Cursor & cur, FuncRequest & cmd)
                                InsetListingsParams new_params(to_utf8(p["lstparams"]));
                                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_;
                                        label_ = 0;
-                               } 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 {
+                                       docstring old_label;
+                                       if (label_) 
+                                               old_label = label_->getParam("name");
+                                       else {
+                                               label_ = createLabel(new_label);
+                                               label_->setBuffer(buffer());
+                                       }                                       
+
+                                       if (new_label != old_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")) + "}", true);
+                                                       p["lstparams"] = from_utf8(new_params.params());
+                                               }
                                        }
-                               } else if (old_label != new_label) {
-                                       label_ = createLabel(new_label);
-                                       label_->setBuffer(buffer());
-                                       label_->initView();
                                }
                        }
                        setParams(p);