mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 19:25:39 +00:00
Implementation of the conclusion of the "LyX/Mac 1.6 -- Window issues" thread:
* add tab popup menu to hide and close a buffer. * remove the very non-standard hide-button on the left of the tabbar. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@23748 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
parent
f2c9b56fb4
commit
b607775ad7
@ -1166,7 +1166,8 @@ NoTabFrameMacStyle noTabFrameMacStyle;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
TabWorkArea::TabWorkArea(QWidget * parent) : QTabWidget(parent)
|
TabWorkArea::TabWorkArea(QWidget * parent)
|
||||||
|
: QTabWidget(parent), clicked_tab_(-1)
|
||||||
{
|
{
|
||||||
#ifdef Q_WS_MACX
|
#ifdef Q_WS_MACX
|
||||||
setStyle(&noTabFrameMacStyle);
|
setStyle(&noTabFrameMacStyle);
|
||||||
@ -1196,17 +1197,10 @@ TabWorkArea::TabWorkArea(QWidget * parent) : QTabWidget(parent)
|
|||||||
this, SLOT(closeCurrentBuffer()));
|
this, SLOT(closeCurrentBuffer()));
|
||||||
setCornerWidget(closeBufferButton, Qt::TopRightCorner);
|
setCornerWidget(closeBufferButton, Qt::TopRightCorner);
|
||||||
|
|
||||||
QToolButton * closeTabButton = new QToolButton(this);
|
// make us responsible for the context menu of the tabbar
|
||||||
closeTabButton->setPalette(pal);
|
tabBar()->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
closeTabButton->setIcon(QIcon(":/images/hidetab.png"));
|
connect(tabBar(), SIGNAL(customContextMenuRequested(const QPoint &)),
|
||||||
closeTabButton->setText("Hide tab");
|
this, SLOT(showContextMenu(const QPoint &)));
|
||||||
closeTabButton->setAutoRaise(true);
|
|
||||||
closeTabButton->setCursor(Qt::ArrowCursor);
|
|
||||||
closeTabButton->setToolTip(qt_("Hide tab"));
|
|
||||||
closeTabButton->setEnabled(true);
|
|
||||||
QObject::connect(closeTabButton, SIGNAL(clicked()),
|
|
||||||
this, SLOT(closeCurrentTab()));
|
|
||||||
setCornerWidget(closeTabButton, Qt::TopLeftCorner);
|
|
||||||
|
|
||||||
setUsesScrollButtons(true);
|
setUsesScrollButtons(true);
|
||||||
}
|
}
|
||||||
@ -1351,13 +1345,22 @@ void TabWorkArea::on_currentTabChanged(int i)
|
|||||||
|
|
||||||
void TabWorkArea::closeCurrentBuffer()
|
void TabWorkArea::closeCurrentBuffer()
|
||||||
{
|
{
|
||||||
|
if (clicked_tab_ != -1)
|
||||||
|
setCurrentIndex(clicked_tab_);
|
||||||
|
|
||||||
lyx::dispatch(FuncRequest(LFUN_BUFFER_CLOSE));
|
lyx::dispatch(FuncRequest(LFUN_BUFFER_CLOSE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void TabWorkArea::closeCurrentTab()
|
void TabWorkArea::closeCurrentTab()
|
||||||
{
|
{
|
||||||
removeWorkArea(currentWorkArea());
|
if (clicked_tab_ == -1)
|
||||||
|
removeWorkArea(currentWorkArea());
|
||||||
|
else {
|
||||||
|
GuiWorkArea * wa = dynamic_cast<GuiWorkArea *>(widget(clicked_tab_));
|
||||||
|
BOOST_ASSERT(wa);
|
||||||
|
removeWorkArea(wa);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1369,6 +1372,25 @@ void TabWorkArea::updateTabText(GuiWorkArea * wa)
|
|||||||
setTabText(i, wa->windowTitle());
|
setTabText(i, wa->windowTitle());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void TabWorkArea::showContextMenu(const QPoint & pos)
|
||||||
|
{
|
||||||
|
// which tab?
|
||||||
|
clicked_tab_ = tabBar()->tabAt(pos);
|
||||||
|
if (clicked_tab_ != -1) {
|
||||||
|
// show tab popup
|
||||||
|
QMenu popup;
|
||||||
|
popup.addAction(QIcon(":/images/hidetab.png"),
|
||||||
|
qt_("Hide tab"), this, SLOT(closeCurrentTab()));
|
||||||
|
popup.addAction(QIcon(":/images/closetab.png"),
|
||||||
|
qt_("Close tab"), this, SLOT(closeCurrentBuffer()));
|
||||||
|
popup.exec(tabBar()->mapToGlobal(pos));
|
||||||
|
|
||||||
|
clicked_tab_ = -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
} // namespace lyx
|
} // namespace lyx
|
||||||
|
|
||||||
|
@ -264,12 +264,19 @@ Q_SIGNALS:
|
|||||||
public Q_SLOTS:
|
public Q_SLOTS:
|
||||||
///
|
///
|
||||||
void on_currentTabChanged(int index);
|
void on_currentTabChanged(int index);
|
||||||
///
|
/// close current buffer, or the one given by \c clicked_tab_
|
||||||
void closeCurrentBuffer();
|
void closeCurrentBuffer();
|
||||||
///
|
/// close current tab, or the one given by \c clicked_tab_
|
||||||
void closeCurrentTab();
|
void closeCurrentTab();
|
||||||
///
|
///
|
||||||
void updateTabText(GuiWorkArea *);
|
void updateTabText(GuiWorkArea *);
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
///
|
||||||
|
void showContextMenu(const QPoint & pos);
|
||||||
|
|
||||||
|
private:
|
||||||
|
int clicked_tab_;
|
||||||
}; // TabWorkArea
|
}; // TabWorkArea
|
||||||
|
|
||||||
} // namespace frontend
|
} // namespace frontend
|
||||||
|
Loading…
Reference in New Issue
Block a user