Hello all,

Currently in LyX you can insert into child documents the insets for branches defined in master document only. But it is impossible to change the branch afterwards for such inset because master branches are not shown in the "Branch Settings" dialog.

The attached patch fixes this.

Yuriy

From e46a33c41625bc7ca49df53a8bf14997c318f92d Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.ska...@gmail.com>
Date: Thu, 6 Oct 2022 20:24:59 +0300
Subject: [PATCH] Show branches from master document in branch inset dialog

---
 src/frontends/qt/GuiBranch.cpp | 31 +++++++++++++++++++++++--------
 1 file changed, 23 insertions(+), 8 deletions(-)

diff --git a/src/frontends/qt/GuiBranch.cpp b/src/frontends/qt/GuiBranch.cpp
index 24b6977390..94172b7967 100644
--- a/src/frontends/qt/GuiBranch.cpp
+++ b/src/frontends/qt/GuiBranch.cpp
@@ -22,6 +22,8 @@
 
 #include "insets/InsetBranch.h"
 
+#include "support/gettext.h"
+
 #include <QPushButton>
 
 using namespace std;
@@ -40,20 +42,33 @@ GuiBranch::GuiBranch(QWidget * parent) : 
InsetParamsWidget(parent)
 void GuiBranch::paramsToDialog(Inset const * inset)
 {
        InsetBranch const * ib = static_cast<InsetBranch const *>(inset);
-       typedef BranchList::const_iterator const_iterator;
-       BranchList const & branchlist = ib->buffer().params().branchlist();
+       Buffer const & buf = ib->buffer();
+       BranchList const & branchlist = buf.params().branchlist();
        docstring const cur_branch = ib->branch();
 
        branchCO->clear();
-       const_iterator const begin = branchlist.begin();
-       const_iterator const end = branchlist.end();
        int id = 0;
        int count = 0;
-       for (const_iterator it = begin; it != end; ++it, ++count) {
-               docstring const & branch = it->branch();
-               branchCO->addItem(toqstr(branch));
+       for (Branch const & it : branchlist) {
+               docstring const & branch = it.branch();
+               branchCO->addItem(toqstr(branch), toqstr(branch));
                if (cur_branch == branch)
                        id = count;
+               ++count;
+       }
+       // Add branches from master
+       Buffer const * masterBuf = buf.masterBuffer();
+       if (masterBuf != &buf) {
+               BranchList const & masterBranchlist = 
masterBuf->params().branchlist();
+               for (Branch const & it : masterBranchlist) {
+                       docstring const & branch = it.branch();
+                       if (!branchlist.find(branch)) {
+                               branchCO->addItem(toqstr(branch + _(" 
(master)")), toqstr(branch));
+                               if (cur_branch == branch)
+                                       id = count;
+                               ++count;
+                       }
+               }
        }
        branchCO->setCurrentIndex(id);
        invertedCB->setChecked(ib->params().inverted);
@@ -62,7 +77,7 @@ void GuiBranch::paramsToDialog(Inset const * inset)
 
 docstring GuiBranch::dialogToParams() const
 {
-       InsetBranchParams params(qstring_to_ucs4(branchCO->currentText()), 
invertedCB->isChecked());
+       InsetBranchParams 
params(qstring_to_ucs4(branchCO->currentData().toString()), 
invertedCB->isChecked());
        return from_utf8(InsetBranch::params2string(params));
 }
 
-- 
2.28.0.windows.1

-- 
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to