GUI: basics for a highlight context menu
This commit is contained in:
parent
53ea8b8332
commit
469094d503
|
|
@ -693,31 +693,21 @@ void Disassembly::mousePressEvent(QMouseEvent* event)
|
|||
{
|
||||
bool wAccept = false;
|
||||
|
||||
if(DbgIsDebugging() && ((event->buttons() & Qt::LeftButton) != 0) && ((event->buttons() & Qt::RightButton) == 0))
|
||||
if(mHighlightingMode)
|
||||
{
|
||||
if(getGuiState() == AbstractTableView::NoState)
|
||||
if(getColumnIndexFromX(event->x()) == 2) //click in instruction column
|
||||
{
|
||||
if(mHighlightingMode)
|
||||
int rowOffset = getIndexOffsetFromY(transY(event->y()));
|
||||
if(rowOffset < mInstBuffer.size())
|
||||
{
|
||||
if(getColumnIndexFromX(event->x()) == 2) //click in instruction column
|
||||
CapstoneTokenizer::SingleToken token;
|
||||
if(CapstoneTokenizer::TokenFromX(mInstBuffer.at(rowOffset).tokens, token, event->x(), mFontMetrics))
|
||||
{
|
||||
int rowOffset = getIndexOffsetFromY(transY(event->y()));
|
||||
if(rowOffset < mInstBuffer.size())
|
||||
if(CapstoneTokenizer::IsHighlightableToken(token) && !CapstoneTokenizer::TokenEquals(&token, &mHighlightToken))
|
||||
mHighlightToken = token;
|
||||
else
|
||||
{
|
||||
CapstoneTokenizer::SingleToken token;
|
||||
if(CapstoneTokenizer::TokenFromX(mInstBuffer.at(rowOffset).tokens, token, event->x(), mFontMetrics))
|
||||
{
|
||||
if(CapstoneTokenizer::IsHighlightableToken(token) && !CapstoneTokenizer::TokenEquals(&token, &mHighlightToken))
|
||||
mHighlightToken = token;
|
||||
else
|
||||
{
|
||||
mHighlightToken = CapstoneTokenizer::SingleToken();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mHighlightToken = CapstoneTokenizer::SingleToken();
|
||||
}
|
||||
mHighlightToken = CapstoneTokenizer::SingleToken();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -725,7 +715,19 @@ void Disassembly::mousePressEvent(QMouseEvent* event)
|
|||
mHighlightToken = CapstoneTokenizer::SingleToken();
|
||||
}
|
||||
}
|
||||
else if(event->y() > getHeaderHeight())
|
||||
}
|
||||
else
|
||||
{
|
||||
mHighlightToken = CapstoneTokenizer::SingleToken();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if(DbgIsDebugging() && ((event->buttons() & Qt::LeftButton) != 0) && ((event->buttons() & Qt::RightButton) == 0))
|
||||
{
|
||||
if(getGuiState() == AbstractTableView::NoState)
|
||||
{
|
||||
if(event->y() > getHeaderHeight())
|
||||
{
|
||||
dsint wIndex = getIndexOffsetFromY(transY(event->y()));
|
||||
|
||||
|
|
|
|||
|
|
@ -150,7 +150,6 @@ private:
|
|||
|
||||
QList<HistoryData_t> mVaHistory;
|
||||
int mCurrentVa;
|
||||
CapstoneTokenizer::SingleToken mHighlightToken;
|
||||
|
||||
protected:
|
||||
// Configuration
|
||||
|
|
@ -216,6 +215,7 @@ protected:
|
|||
XREF_INFO mXrefInfo;
|
||||
CodeFoldingHelper* mCodeFoldingManager;
|
||||
DisassemblyPopup mDisassemblyPopup;
|
||||
CapstoneTokenizer::SingleToken mHighlightToken;
|
||||
};
|
||||
|
||||
#endif // DISASSEMBLY_H
|
||||
|
|
|
|||
|
|
@ -52,9 +52,11 @@ void CPUDisassembly::mousePressEvent(QMouseEvent* event)
|
|||
}
|
||||
else
|
||||
{
|
||||
mHighlightContextMenu = false;
|
||||
Disassembly::mousePressEvent(event);
|
||||
if(mHighlightingMode) //disable highlighting mode after clicked
|
||||
{
|
||||
mHighlightContextMenu = true;
|
||||
mHighlightingMode = false;
|
||||
reloadData();
|
||||
}
|
||||
|
|
@ -201,8 +203,12 @@ void CPUDisassembly::setupFollowReferenceMenu(dsint wVA, QMenu* menu, bool isRef
|
|||
void CPUDisassembly::contextMenuEvent(QContextMenuEvent* event)
|
||||
{
|
||||
QMenu wMenu(this);
|
||||
mMenuBuilder->build(&wMenu);
|
||||
wMenu.exec(event->globalPos());
|
||||
if(!mHighlightContextMenu)
|
||||
mMenuBuilder->build(&wMenu);
|
||||
else if(mHighlightToken.text.length())
|
||||
mHighlightMenuBuilder->build(&wMenu);
|
||||
if(wMenu.actions().length())
|
||||
wMenu.exec(event->globalPos());
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
|
|
@ -595,6 +601,9 @@ void CPUDisassembly::setupRightClickContextMenu()
|
|||
menu->addActions(mPluginMenu->actions());
|
||||
return true;
|
||||
}));
|
||||
|
||||
// Highlight menu
|
||||
mHighlightMenuBuilder = new MenuBuilder(this);
|
||||
}
|
||||
|
||||
void CPUDisassembly::gotoOriginSlot()
|
||||
|
|
|
|||
|
|
@ -140,7 +140,8 @@ private:
|
|||
CPUWidget* mParentCPUWindow;
|
||||
|
||||
MenuBuilder* mMenuBuilder;
|
||||
|
||||
MenuBuilder* mHighlightMenuBuilder;
|
||||
bool mHighlightContextMenu = false;
|
||||
};
|
||||
|
||||
#endif // CPUDISASSEMBLY_H
|
||||
|
|
|
|||
Loading…
Reference in New Issue