mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
* 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:
parent
361a97b070
commit
4f8febc1b4
@ -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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user