[PATCH] Show branches from master document in branch inset dialog

Yuriy Skalko yuriy.skalko at gmail.com
Fri Oct 7 15:02:04 UTC 2022


 > Looks good. One nitpick:
 >
 > +                       if (!branchlist.find(branch)) {
 > +                               branchCO->addItem(toqstr(branch + _("
 > (master)")), toqstr(branch));
 >
 > I'd use boost format for this:
 >
 > branchCO->addItem(
 >         toqstr(bformat( _("%1$s[[branch]] (%2$s)[[master]]"),
 >                toqstr(branch), qt_("master"))));
 >
 > since with RTL scripts your precomposed string will be wrong I think.
 >
 > --
 > Jürgen

Thanks for the suggestion, I've updated the patch.


 > Looks good. One point though: for some reason, you use 
QComboBox::currentData, which is only present in Qt >=5.2. This will 
break Qt4.
 >
 >
 > JMarc

Now with "(master)" suffix in combobox labels we cannot use them 
directly as branch names. Is is OK to disable this for Qt4 alltogether, 
as README says that LyX is only compilable on Qt4?


Yuriy


-------------- next part --------------
From 716cc9991d1025614424b7ceaa6761ab0f817083 Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.skalko at gmail.com>
Date: Fri, 7 Oct 2022 17:41:46 +0300
Subject: [PATCH] Show branches from master document in branch inset dialog

---
 src/frontends/qt/GuiBranch.cpp | 42 +++++++++++++++++++++++++++++-----
 1 file changed, 36 insertions(+), 6 deletions(-)

diff --git a/src/frontends/qt/GuiBranch.cpp b/src/frontends/qt/GuiBranch.cpp
index 24b6977390..3a1625306f 100644
--- a/src/frontends/qt/GuiBranch.cpp
+++ b/src/frontends/qt/GuiBranch.cpp
@@ -22,9 +22,13 @@
 
 #include "insets/InsetBranch.h"
 
+#include "support/gettext.h"
+#include "support/lstrings.h"
+
 #include <QPushButton>
 
 using namespace std;
+using namespace lyx::support;
 
 namespace lyx {
 namespace frontend {
@@ -40,21 +44,43 @@ 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();
+	for (Branch const & it : branchlist) {
+		docstring const & branch = it.branch();
+#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
+		branchCO->addItem(toqstr(branch), toqstr(branch));
+#else
 		branchCO->addItem(toqstr(branch));
+#endif
 		if (cur_branch == branch)
 			id = count;
+		++count;
+	}
+#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
+	// 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(bformat(_("%1$s[[branch]] (%2$s)[[master]]"),
+						   branch, _("master"))),
+					toqstr(branch));
+				if (cur_branch == branch)
+					id = count;
+				++count;
+			}
+		}
 	}
+#endif
 	branchCO->setCurrentIndex(id);
 	invertedCB->setChecked(ib->params().inverted);
 }
@@ -62,7 +88,11 @@ void GuiBranch::paramsToDialog(Inset const * inset)
 
 docstring GuiBranch::dialogToParams() const
 {
+#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
+	InsetBranchParams params(qstring_to_ucs4(branchCO->currentData().toString()), invertedCB->isChecked());
+#else
 	InsetBranchParams params(qstring_to_ucs4(branchCO->currentText()), invertedCB->isChecked());
+#endif
 	return from_utf8(InsetBranch::params2string(params));
 }
 
-- 
2.28.0.windows.1



More information about the lyx-devel mailing list