]> git.lyx.org Git - features.git/commitdiff
Fix bug 5851: Branch definitions not shown in Insert>Branch menu if master is set.
authorJürgen Spitzmüller <spitz@lyx.org>
Fri, 27 Mar 2009 11:44:40 +0000 (11:44 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Fri, 27 Mar 2009 11:44:40 +0000 (11:44 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@28934 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/Menus.cpp
src/insets/InsetBranch.cpp

index 5d8cfe0e5da8bb5c4e6413f8e4ccd90314b22fee..d323c7b3133b8a61096ecf6b2cce9f636af7fcb2 100644 (file)
@@ -1044,14 +1044,15 @@ void MenuDefinition::expandBranches(Buffer const * buf)
        if (!buf)
                return;
 
-       BufferParams const & params = buf->masterBuffer()->params();
-       if (params.branchlist().empty()) {
+       BufferParams const & master_params = buf->masterBuffer()->params();
+       BufferParams const & params = buf->params();
+       if (params.branchlist().empty() && master_params.branchlist().empty() ) {
                add(MenuItem(MenuItem::Help, qt_("No branches set for document!")));
                return;
        }
 
-       BranchList::const_iterator cit = params.branchlist().begin();
-       BranchList::const_iterator end = params.branchlist().end();
+       BranchList::const_iterator cit = master_params.branchlist().begin();
+       BranchList::const_iterator end = master_params.branchlist().end();
 
        for (int ii = 1; cit != end; ++cit, ++ii) {
                docstring label = cit->branch();
@@ -1063,6 +1064,32 @@ void MenuDefinition::expandBranches(Buffer const * buf)
                                    FuncRequest(LFUN_BRANCH_INSERT,
                                                cit->branch())));
        }
+       
+       if (buf == buf->masterBuffer())
+               return;
+       
+       MenuDefinition child_branches;
+       
+       BranchList::const_iterator ccit = params.branchlist().begin();
+       BranchList::const_iterator cend = params.branchlist().end();
+
+       for (int ii = 1; ccit != cend; ++ccit, ++ii) {
+               docstring label = ccit->branch();
+               if (ii < 10) {
+                       label = convert<docstring>(ii) + ". " + label
+                               + char_type('|') + convert<docstring>(ii);
+               }
+               child_branches.addWithStatusCheck(MenuItem(MenuItem::Command,
+                                   toqstr(label),
+                                   FuncRequest(LFUN_BRANCH_INSERT,
+                                               ccit->branch())));
+       }
+       
+       if (!child_branches.empty()) {
+               MenuItem item(MenuItem::Submenu, qt_("Child Document"));
+               item.setSubmenu(child_branches);
+               add(item);
+       }
 }
 
 
index 68dfe19385cc6360223722f1ff5eeb1bda6dd296..001ea68621d57ce48ee9cbd3ae8f903313352ac9 100644 (file)
@@ -84,6 +84,10 @@ docstring InsetBranch::toolTip(BufferView const &, int, int) const
 docstring const InsetBranch::buttonLabel(BufferView const & bv) const
 {
        docstring s = _("Branch: ") + params_.branch;
+       Buffer const & realbuffer = *buffer().masterBuffer();
+       BranchList const & branchlist = realbuffer.params().branchlist();
+       if (!branchlist.find(params_.branch))
+               s = _("Branch (child only): ") + params_.branch;
        if (!params_.branch.empty()) {
                // FIXME UNICODE
                ColorCode c = lcolor.getFromLyXName(to_utf8(params_.branch));