* QLMenubar.C (macxMenuBarInit): fix workaround for menu merging

with Qt/Mac. Still does not work in non-default locale.

	* QLPopupMenu.C (specialMacXmenuHack): remove, not needed anymore.

	* GuiView.C (init): remove Mac hack, not needed anymore.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16349 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2006-12-20 14:28:06 +00:00
parent 361a97b070
commit 4f8febc1b4
5 changed files with 35 additions and 62 deletions

View File

@ -219,25 +219,6 @@ void GuiView::init()
updateToolbars(); updateToolbars();
updateLayoutChoice(); updateLayoutChoice();
updateMenubar(); updateMenubar();
#ifdef Q_WS_MACX
// Qt docs:
// "quit or exit Application Menu | Quit <application name>
// If this entry is not found a default Quit item will be created to call
// QApplication::quit()"
QMenu * lyxMenu = menuBar()->addMenu("&LyX");
QAction * quitAction = new QAction(tr("&Quit"), this);
lyxMenu->addAction(quitAction);
connect(quitAction, SIGNAL(triggered()),this, SLOT(macQuit()));
#endif
}
void GuiView::macQuit()
{
// this slot is only called on Mac
dispatch(FuncRequest(LFUN_LYX_QUIT));
} }

View File

@ -103,9 +103,6 @@ public Q_SLOTS:
void normalSizedIcons(); void normalSizedIcons();
void bigSizedIcons(); void bigSizedIcons();
/// slot needed by the Mac
void macQuit();
protected: protected:
/// make sure we quit cleanly /// make sure we quit cleanly
virtual void closeEvent(QCloseEvent * e); virtual void closeEvent(QCloseEvent * e);

View File

@ -14,6 +14,7 @@
// All is well if the namespace is visible first. // All is well if the namespace is visible first.
#include "GuiView.h" #include "GuiView.h"
#include "Action.h"
#include "QLMenubar.h" #include "QLMenubar.h"
#include "QLPopupMenu.h" #include "QLPopupMenu.h"
@ -126,6 +127,8 @@ MenuBackend const & QLMenubar::backend()
} }
/// Some special Qt/Mac support hacks
/* /*
Here is what the Qt documentation says about how a menubar is chosen: Here is what the Qt documentation says about how a menubar is chosen:
@ -156,17 +159,44 @@ QMenuBar * QLMenubar::menuBar() const
#endif #endif
} }
#ifdef Q_WS_MACX
# define MERGE_MAC_MENUS
# ifndef MERGE_MAC_MENUS
extern void qt_mac_set_menubar_merge(bool b);
# endif
#endif
void QLMenubar::macxMenuBarInit() void QLMenubar::macxMenuBarInit()
{ {
#ifdef Q_WS_MACX #ifdef Q_WS_MACX
mac_menubar_.reset(new QMenuBar); mac_menubar_.reset(new QMenuBar);
# ifdef MERGE_MAC_MENUS
/* The qt/mac menu code has a very silly hack that moves some
menu entries that it recognizes by name (e.g.
"Preferences...") to the "LyX" menu. This feature can only
work if the menu entries are always available. Since we
build menus on demand, we add the entries to a dummy menu
(JMarc)
*/
// this is the name of the menu that contains our special entries // this is the name of the menu that contains our special entries
menubackend_.specialMenu(lyx::from_ascii("LyX")); docstring const & specialname = from_ascii("LyX");
// make sure that the special entries are added to the first if (menubackend_.hasMenu(specialname)) {
// menu even before this menu has been opened. QMenu * qMenu = owner_->menuBar()->addMenu("special");
//name_map_[menubackend_.getMenubar().begin()->submenuname()]->update(); //qMenu->setVisible(false);
#endif
menubackend_.specialMenu(specialname);
Menu const & special = menubackend_.getMenu(specialname);
Menu::const_iterator end = special.end();
for (Menu::const_iterator cit = special.begin();
cit != end ; ++cit)
qMenu->addAction(new Action(*owner_, cit->label(), cit->func()));
}
# else
qt_mac_set_menubar_merge(false);
# endif // MERGE_MAC_MENUS
#endif // Q_WS_MACX
} }
} // namespace frontend } // namespace frontend

View File

@ -41,8 +41,6 @@ namespace lyx {
namespace frontend { namespace frontend {
// MacOSX specific stuff is at the end.
QLPopupMenu::QLPopupMenu(QLMenubar * owner, QLPopupMenu::QLPopupMenu(QLMenubar * owner,
MenuItem const & mi, bool topLevelMenu) MenuItem const & mi, bool topLevelMenu)
: owner_(owner) : owner_(owner)
@ -77,8 +75,6 @@ void QLPopupMenu::update()
lyxerr[Debug::GUI] << "\tWARNING: menu seems empty" << lyx::to_utf8(topLevelMenu_.name()) << endl; lyxerr[Debug::GUI] << "\tWARNING: menu seems empty" << lyx::to_utf8(topLevelMenu_.name()) << endl;
} }
populate(this, &topLevelMenu_); populate(this, &topLevelMenu_);
specialMacXmenuHack();
} }
void QLPopupMenu::populate(QMenu* qMenu, Menu * menu) void QLPopupMenu::populate(QMenu* qMenu, Menu * menu)
@ -138,7 +134,6 @@ docstring const QLPopupMenu::getLabel(MenuItem const & mi)
return label; return label;
} }
/// \todo Mac specific binding handling.
void QLPopupMenu::addBinding(docstring & label, MenuItem const & mi) void QLPopupMenu::addBinding(docstring & label, MenuItem const & mi)
{ {
docstring const binding(mi.binding()); docstring const binding(mi.binding());
@ -147,31 +142,6 @@ void QLPopupMenu::addBinding(docstring & label, MenuItem const & mi)
} }
} }
/// \todo Fix Mac specific menu hack
void QLPopupMenu::specialMacXmenuHack()
{
#ifdef Q_WS_MACX
/* The qt/mac menu code has a very silly hack that
moves some menu entries that it recognizes by name
(e.g. "Preferences...") to the "LyX" menu. This
feature can only work if the menu entries are
always available. Since we build menus on demand,
we add some dummy contents to one of the menus (JMarc)
*/
/*
static QLPopupMenu * themenu = this;
if (themenu == this && owner_->backend().hasMenu("LyX")) {
Menu special = owner_->backend().getMenu("LyX");
Menu::const_iterator end = special.end();
Menu::size_type i = 0;
for (Menu::const_iterator cit = special.begin();
cit != end ; ++cit, ++i)
insertItem(toqstr(cit->label()), indexOffset + i);
}
*/
#endif
}
} // namespace frontend } // namespace frontend
} // namespace lyx } // namespace lyx

View File

@ -50,15 +50,10 @@ private:
lyx::docstring const getLabel(MenuItem const & mi); lyx::docstring const getLabel(MenuItem const & mi);
/// add binding keys a the menu item label. /// add binding keys a the menu item label.
/// \todo Mac specific binding handling.
void addBinding(lyx::docstring & label, MenuItem const & mi); void addBinding(lyx::docstring & label, MenuItem const & mi);
/// Top Level Menu /// Top Level Menu
Menu topLevelMenu_; Menu topLevelMenu_;
/// Mac specific menu hack
/// \todo Fix it
void specialMacXmenuHack();
}; };
} // namespace frontend } // namespace frontend