forked from qt-creator/qt-creator
LiteHtmlHelpViewer: Handle mouse back/forward buttons
Fixes: QTCREATORBUG-25168 Change-Id: I856743040e81a0164e666f14ea7efd10f208f865 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
@@ -205,11 +205,14 @@ void LiteHtmlHelpViewer::backward()
|
|||||||
{
|
{
|
||||||
goBackward(1);
|
goBackward(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LiteHtmlHelpViewer::goForward(int count)
|
void LiteHtmlHelpViewer::goForward(int count)
|
||||||
{
|
{
|
||||||
|
const int steps = qMin(count, int(m_forwardItems.size()));
|
||||||
|
if (steps == 0)
|
||||||
|
return;
|
||||||
HistoryItem nextItem = currentHistoryItem();
|
HistoryItem nextItem = currentHistoryItem();
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < steps; ++i) {
|
||||||
QTC_ASSERT(!m_forwardItems.empty(), return );
|
|
||||||
m_backItems.push_back(nextItem);
|
m_backItems.push_back(nextItem);
|
||||||
nextItem = m_forwardItems.front();
|
nextItem = m_forwardItems.front();
|
||||||
m_forwardItems.erase(m_forwardItems.begin());
|
m_forwardItems.erase(m_forwardItems.begin());
|
||||||
@@ -221,9 +224,11 @@ void LiteHtmlHelpViewer::goForward(int count)
|
|||||||
|
|
||||||
void LiteHtmlHelpViewer::goBackward(int count)
|
void LiteHtmlHelpViewer::goBackward(int count)
|
||||||
{
|
{
|
||||||
|
const int steps = qMin(count, int(m_backItems.size()));
|
||||||
|
if (steps == 0)
|
||||||
|
return;
|
||||||
HistoryItem previousItem = currentHistoryItem();
|
HistoryItem previousItem = currentHistoryItem();
|
||||||
for (int i = 0; i < count; ++i) {
|
for (int i = 0; i < steps; ++i) {
|
||||||
QTC_ASSERT(!m_backItems.empty(), return );
|
|
||||||
m_forwardItems.insert(m_forwardItems.begin(), previousItem);
|
m_forwardItems.insert(m_forwardItems.begin(), previousItem);
|
||||||
previousItem = m_backItems.back();
|
previousItem = m_backItems.back();
|
||||||
m_backItems.pop_back();
|
m_backItems.pop_back();
|
||||||
@@ -247,6 +252,15 @@ bool LiteHtmlHelpViewer::eventFilter(QObject *src, QEvent *e)
|
|||||||
e->ignore();
|
e->ignore();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
} else if (e->type() == QEvent::MouseButtonPress) {
|
||||||
|
auto me = static_cast<QMouseEvent *>(e);
|
||||||
|
if (me->button() == Qt::BackButton) {
|
||||||
|
goBackward(1);
|
||||||
|
return true;
|
||||||
|
} else if (me->button() == Qt::ForwardButton) {
|
||||||
|
goForward(1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return HelpViewer::eventFilter(src, e);
|
return HelpViewer::eventFilter(src, e);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user