forked from qt-creator/qt-creator
BinEditor: Flatten context menu.
This commit is contained in:
@@ -1236,15 +1236,12 @@ void BinEditor::contextMenuEvent(QContextMenuEvent *event)
|
|||||||
QMenu contextMenu;
|
QMenu contextMenu;
|
||||||
QAction copyAsciiAction(tr("Copy Selection as ASCII Characters"), this);
|
QAction copyAsciiAction(tr("Copy Selection as ASCII Characters"), this);
|
||||||
QAction copyHexAction(tr("Copy Selection as Hex Values"), this);
|
QAction copyHexAction(tr("Copy Selection as Hex Values"), this);
|
||||||
QMenu jumpBeMenu;
|
QAction jumpToBeAddressHere(this);
|
||||||
QMenu jumpLeMenu;
|
QAction jumpToBeAddressNewWindow(this);
|
||||||
QAction jumpToBeAddressHere(tr("In This Window"), this);
|
QAction jumpToLeAddressHere(this);
|
||||||
QAction jumpToBeAddressNewWindow(tr("In New Window"), this);
|
QAction jumpToLeAddressNewWindow(this);
|
||||||
QAction jumpToLeAddressHere(tr("In This Window"), this);
|
|
||||||
QAction jumpToLeAddressNewWindow(tr("In New Window"), this);
|
|
||||||
contextMenu.addAction(©AsciiAction);
|
contextMenu.addAction(©AsciiAction);
|
||||||
contextMenu.addAction(©HexAction);
|
contextMenu.addAction(©HexAction);
|
||||||
contextMenu.addMenu(&jumpBeMenu);
|
|
||||||
|
|
||||||
quint64 beAddress = 0;
|
quint64 beAddress = 0;
|
||||||
quint64 leAddress = 0;
|
quint64 leAddress = 0;
|
||||||
@@ -1256,18 +1253,21 @@ void BinEditor::contextMenuEvent(QContextMenuEvent *event)
|
|||||||
leAddress += val << ((byteCount - pos - 1) * 8);
|
leAddress += val << ((byteCount - pos - 1) * 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
setupJumpToMenuAction(&jumpBeMenu, &jumpToBeAddressHere,
|
setupJumpToMenuAction(&contextMenu, &jumpToBeAddressHere,
|
||||||
&jumpToBeAddressNewWindow, beAddress);
|
&jumpToBeAddressNewWindow, beAddress);
|
||||||
|
|
||||||
// If the menu entries would be identical, show only one of them.
|
// If the menu entries would be identical, show only one of them.
|
||||||
if (beAddress != leAddress) {
|
if (beAddress != leAddress) {
|
||||||
setupJumpToMenuAction(&jumpLeMenu, &jumpToLeAddressHere,
|
setupJumpToMenuAction(&contextMenu, &jumpToLeAddressHere,
|
||||||
&jumpToLeAddressNewWindow, leAddress);
|
&jumpToLeAddressNewWindow, leAddress);
|
||||||
contextMenu.addMenu(&jumpLeMenu);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
jumpBeMenu.setTitle(tr("Jump to Address"));
|
jumpToBeAddressHere.setText(tr("Jump to Address in This Window"));
|
||||||
jumpBeMenu.setEnabled(false);
|
jumpToBeAddressNewWindow.setText(tr("Jump to Address in New Window"));
|
||||||
|
jumpToBeAddressHere.setEnabled(false);
|
||||||
|
jumpToBeAddressNewWindow.setEnabled(false);
|
||||||
|
contextMenu.addAction(&jumpToBeAddressHere);
|
||||||
|
contextMenu.addAction(&jumpToBeAddressNewWindow);
|
||||||
}
|
}
|
||||||
|
|
||||||
QAction *action = contextMenu.exec(event->globalPos());
|
QAction *action = contextMenu.exec(event->globalPos());
|
||||||
@@ -1288,15 +1288,16 @@ void BinEditor::contextMenuEvent(QContextMenuEvent *event)
|
|||||||
void BinEditor::setupJumpToMenuAction(QMenu *menu, QAction *actionHere,
|
void BinEditor::setupJumpToMenuAction(QMenu *menu, QAction *actionHere,
|
||||||
QAction *actionNew, quint64 addr)
|
QAction *actionNew, quint64 addr)
|
||||||
{
|
{
|
||||||
menu->setTitle(tr("Jump to Address 0x%1").arg(QString::number(addr, 16)));
|
actionHere->setText(tr("Jump to Address 0x%1 in This Window")
|
||||||
|
.arg(QString::number(addr, 16)));
|
||||||
|
actionNew->setText(tr("Jump to Address 0x%1 in New Window")
|
||||||
|
.arg(QString::number(addr, 16)));
|
||||||
menu->addAction(actionHere);
|
menu->addAction(actionHere);
|
||||||
|
menu->addAction(actionNew);
|
||||||
if (addr < m_baseAddr || addr >= m_baseAddr + m_size)
|
if (addr < m_baseAddr || addr >= m_baseAddr + m_size)
|
||||||
actionHere->setEnabled(false);
|
actionHere->setEnabled(false);
|
||||||
if (!m_canRequestNewWindow)
|
if (!m_canRequestNewWindow)
|
||||||
actionNew->setEnabled(false);
|
actionNew->setEnabled(false);
|
||||||
menu->addAction(actionNew);
|
|
||||||
if (!actionHere->isEnabled() && !actionNew->isEnabled())
|
|
||||||
menu->setEnabled(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BinEditor::setNewWindowRequestAllowed()
|
void BinEditor::setNewWindowRequestAllowed()
|
||||||
|
|||||||
Reference in New Issue
Block a user