/**
- * \file Menubar_pimpl.C
- * Copyright 1999-2001 The LyX Team.
- * See the file COPYING.
+ * \file qt2/Menubar_pimpl.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * \author Lars Gullik Bjønnes, larsbj@lyx.org
+ * \author Lars Gullik Bjønnes
+ *
+ * Full author contact details are available in file CREDITS
*/
#include <config.h>
-#include <algorithm>
-
#ifdef __GNUG__
#pragma implementation
#endif
#include "QtView.h"
#include "QLPopupMenu.h"
-
+
#include <qmenubar.h>
-
-
+#include <qcursor.h>
+
+#include <algorithm>
+
using std::endl;
using std::vector;
using std::max;
using std::min;
using std::for_each;
+using std::pair;
-Menubar::Pimpl::Pimpl(LyXView * view, MenuBackend const & mbe)
+
+Menubar::Pimpl::Pimpl(LyXView * view, MenuBackend const & mbe)
: owner_(static_cast<QtView*>(view)), menubackend_(mbe)
{
Menu::const_iterator m = mbe.getMenubar().begin();
Menu::const_iterator end = mbe.getMenubar().end();
for (; m != end; ++m) {
- createMenu(owner_->menuBar(), &(*m), this);
+ pair<int, QLPopupMenu *> menu =
+ createMenu(owner_->menuBar(), &(*m), this, true);
+ name_map_[m->submenuname()] = menu.second;
}
}
-void Menubar::Pimpl::openByName(string const &)
+void Menubar::Pimpl::openByName(string const & name)
{
- // FIXME
+ NameMap::const_iterator const cit = name_map_.find(name);
+ if (cit == name_map_.end())
+ return;
+
+ // this will have to do I'm afraid.
+ cit->second->exec(QCursor::pos());
}