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