]> git.lyx.org Git - features.git/commitdiff
disable submenus which contain only disabled items
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 25 Jul 2002 14:00:29 +0000 (14:00 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 25 Jul 2002 14:00:29 +0000 (14:00 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@4786 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/xforms/ChangeLog
src/frontends/xforms/Menubar_pimpl.C
src/frontends/xforms/Menubar_pimpl.h

index 33173d8e8bd689f14fce0b276c1bc558cb625449..385de63a79982804c91f9c65a70917c050af5398 100644 (file)
@@ -1,3 +1,12 @@
+2002-07-25  Jean-Marc Lasgouttes  <lasgouttes@freesurf.fr>
+
+       * Menubar_pimpl.C: do not include "toc.h" and "FloatList.h".
+       (create_submenu): add parameter ``all_disabled'' which will be
+       false only if the menu contains at least one working item. Disable
+       submenus who have all_disabled true. What I could not do, though
+       is disable menubar items when all the menu is disabled (because I
+       know about it only when I try to open this menu)
+
 2002-07-25  Herbert Voss  <voss@perce.de>
 
        * FormBibtex.C (update): clear browser first
index b452a101612cfe63a825a4d741687d356ca90933..f820fb938d34f73a394b93f27b99e88086ca63ac 100644 (file)
 #include "Dialogs.h"
 #include "XFormsView.h"
 #include "lyxfunc.h"
-#include "FloatList.h"
 #include "support/lstrings.h"
 #include "support/LAssert.h"
 #include "gettext.h"
 #include "debug.h"
-#include "toc.h"
 #include FORMS_H_LOCATION
 
 #include <boost/scoped_ptr.hpp>
@@ -200,7 +198,8 @@ string const fixlabel(string const & str)
 
 
 int Menubar::Pimpl::create_submenu(Window win, XFormsView * view,
-                                  Menu const & menu, vector<int> & smn)
+                                  Menu const & menu, vector<int> & smn,
+                                  bool & all_disabled)
 {
        const int menuid = get_new_submenu(smn, win);
        lyxerr[Debug::GUI] << "Menubar::Pimpl::create_submenu: creating "
@@ -295,6 +294,8 @@ int Menubar::Pimpl::create_submenu(Window win, XFormsView * view,
                                pupmode += "%b";
                        if (flag.disabled() || flag.unknown())
                                pupmode += "%i";
+                       else
+                               all_disabled = false;
                        label += pupmode;
 
                        // Finally the menu shortcut
@@ -319,11 +320,14 @@ int Menubar::Pimpl::create_submenu(Window win, XFormsView * view,
 
                case MenuItem::Submenu: {
                        int submenuid = create_submenu(win, view,
-                                                      *item.submenu(), smn);
+                                                      *item.submenu(), smn,
+                                                      all_disabled);
                        if (submenuid == -1)
                                return -1;
                        string label = fixlabel(item.label());
                        label += extra_label + "%m";
+                       if (all_disabled)
+                               label += "%i";
                        string shortcut = item.shortcut();
                        if (!shortcut.empty()) {
                                shortcut += lowercase(shortcut[0]);
@@ -377,8 +381,10 @@ void Menubar::Pimpl::MenuCallback(FL_OBJECT * ob, long button)
        Menu const frommenu = menubackend_->getMenu(item->submenuname());
        menubackend_->expand(frommenu, tomenu, view->buffer());
        vector<int> submenus;
+       bool all_disabled = true;
        int menu = iteminfo->pimpl_->
-               create_submenu(FL_ObjWin(ob), view, tomenu, submenus);
+               create_submenu(FL_ObjWin(ob), view, tomenu,
+                              submenus, all_disabled);
        if (menu != -1) {
                // place popup
                fl_setpup_position(view->getForm()->x + ob->x,
index d38ab1eb45644dda005fbc60a9771b9b34c6781a..16dfdac303fe7b4fda190d1cc9bfd6200b751824 100644 (file)
@@ -58,7 +58,8 @@ private:
                            std::vector<int> & smn, Window win);
        ///
        int create_submenu(Window win, XFormsView * view,
-                          Menu const & menu, std::vector<int> & smn);
+                          Menu const & menu,
+                          std::vector<int> & smn, bool & all_disabled);
 
        //
        void makeMenubar(Menu const &menu);