mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-12-22 13:18:28 +00:00
Introduce class MenuButton in order to delay the math menu button initialisation up until it is first shown. This improve the inital loading time by half a second on windows.
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@22608 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
4559120e8a
commit
0aead96461
@ -444,6 +444,56 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class MenuButton : public QToolButton
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
GuiToolbar * bar_;
|
||||||
|
ToolbarItem const & tbitem_;
|
||||||
|
IconPalette * panel_;
|
||||||
|
bool initialized_;
|
||||||
|
public:
|
||||||
|
MenuButton(GuiToolbar * bar, ToolbarItem const & item)
|
||||||
|
: QToolButton(bar), bar_(bar), tbitem_(item), initialized_(false)
|
||||||
|
{
|
||||||
|
setPopupMode(QToolButton::InstantPopup);
|
||||||
|
setToolTip(qt_(to_ascii(tbitem_.label_)));
|
||||||
|
setStatusTip(qt_(to_ascii(tbitem_.label_)));
|
||||||
|
setText(qt_(to_ascii(tbitem_.label_)));
|
||||||
|
setIcon(QPixmap(":images/math/" + toqstr(tbitem_.name_) + ".png"));
|
||||||
|
connect(bar, SIGNAL(iconSizeChanged(QSize)),
|
||||||
|
this, SLOT(setIconSize(QSize)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void mousePressEvent(QMouseEvent * e)
|
||||||
|
{
|
||||||
|
if (initialized_) {
|
||||||
|
QToolButton::mousePressEvent(e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
initialized_ = true;
|
||||||
|
|
||||||
|
ButtonMenu * m = new ButtonMenu(qt_(to_ascii(tbitem_.label_)), this);
|
||||||
|
m->setWindowTitle(qt_(to_ascii(tbitem_.label_)));
|
||||||
|
m->setTearOffEnabled(true);
|
||||||
|
connect(bar_, SIGNAL(updated()), m, SLOT(updateParent()));
|
||||||
|
ToolbarInfo const * tbinfo =
|
||||||
|
toolbarbackend.getDefinedToolbarInfo(tbitem_.name_);
|
||||||
|
if (!tbinfo) {
|
||||||
|
lyxerr << "Unknown toolbar " << tbitem_.name_ << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ToolbarInfo::item_iterator it = tbinfo->items.begin();
|
||||||
|
ToolbarInfo::item_iterator const end = tbinfo->items.end();
|
||||||
|
for (; it != end; ++it)
|
||||||
|
if (!getStatus(it->func_).unknown())
|
||||||
|
m->add(bar_->addItem(*it));
|
||||||
|
setMenu(m);
|
||||||
|
|
||||||
|
QToolButton::mousePressEvent(e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GuiToolbar::add(ToolbarItem const & item)
|
void GuiToolbar::add(ToolbarItem const & item)
|
||||||
@ -481,31 +531,7 @@ void GuiToolbar::add(ToolbarItem const & item)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ToolbarItem::POPUPMENU: {
|
case ToolbarItem::POPUPMENU: {
|
||||||
QToolButton * tb = new QToolButton;
|
addWidget(new MenuButton(this, item));
|
||||||
tb->setPopupMode(QToolButton::InstantPopup);
|
|
||||||
tb->setToolTip(qt_(to_ascii(item.label_)));
|
|
||||||
tb->setStatusTip(qt_(to_ascii(item.label_)));
|
|
||||||
tb->setText(qt_(to_ascii(item.label_)));
|
|
||||||
tb->setIcon(QPixmap(":images/math/" + toqstr(item.name_) + ".png"));
|
|
||||||
connect(this, SIGNAL(iconSizeChanged(QSize)),
|
|
||||||
tb, SLOT(setIconSize(QSize)));
|
|
||||||
|
|
||||||
ButtonMenu * m = new ButtonMenu(qt_(to_ascii(item.label_)), tb);
|
|
||||||
m->setWindowTitle(qt_(to_ascii(item.label_)));
|
|
||||||
m->setTearOffEnabled(true);
|
|
||||||
connect(this, SIGNAL(updated()), m, SLOT(updateParent()));
|
|
||||||
ToolbarInfo const * tbinfo = toolbarbackend.getDefinedToolbarInfo(item.name_);
|
|
||||||
if (!tbinfo) {
|
|
||||||
lyxerr << "Unknown toolbar " << item.name_ << endl;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
ToolbarInfo::item_iterator it = tbinfo->items.begin();
|
|
||||||
ToolbarInfo::item_iterator const end = tbinfo->items.end();
|
|
||||||
for (; it != end; ++it)
|
|
||||||
if (!getStatus(it->func_).unknown())
|
|
||||||
m->add(addItem(*it));
|
|
||||||
tb->setMenu(m);
|
|
||||||
addWidget(tb);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ToolbarItem::COMMAND: {
|
case ToolbarItem::COMMAND: {
|
||||||
|
Loading…
Reference in New Issue
Block a user