GUI: fixed memory leaks with QMenu (#660)
This commit is contained in:
parent
a8f70ccc01
commit
22d026bcdd
|
@ -197,15 +197,15 @@ void SearchListView::searchTextChanged(const QString & arg1)
|
|||
|
||||
void SearchListView::listContextMenu(const QPoint & pos)
|
||||
{
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
emit listContextMenuSignal(wMenu);
|
||||
wMenu->addSeparator();
|
||||
wMenu->addAction(mSearchAction);
|
||||
QMenu wMenu(this);
|
||||
emit listContextMenuSignal(&wMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addAction(mSearchAction);
|
||||
QMenu wCopyMenu("&Copy", this);
|
||||
mCurList->setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu->exec(mCurList->mapToGlobal(pos));
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
wMenu.exec(mCurList->mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void SearchListView::doubleClickedSlot()
|
||||
|
|
|
@ -420,14 +420,14 @@ void StdTable::contextMenuRequestedSlot(const QPoint & pos)
|
|||
}
|
||||
if(mCopyMenuDebugOnly && !DbgIsDebugging())
|
||||
return;
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
QMenu wMenu(this);
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu->exec(mapToGlobal(pos));
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
wMenu.exec(mapToGlobal(pos));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -298,12 +298,12 @@ void BreakpointsView::hardwareBPContextMenuSlot(const QPoint & pos)
|
|||
if(table->getRowCount() != 0)
|
||||
{
|
||||
int wI = 0;
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
QMenu wMenu(this);
|
||||
duint wVA = table->getCellContent(table->getInitialSelection(), 0).toULongLong(0, 16);
|
||||
BPMAP wBPList;
|
||||
|
||||
// Remove
|
||||
wMenu->addAction(mHardBPRemoveAction);
|
||||
wMenu.addAction(mHardBPRemoveAction);
|
||||
|
||||
// Enable/Disable
|
||||
DbgGetBpList(bp_hardware, &wBPList);
|
||||
|
@ -315,17 +315,17 @@ void BreakpointsView::hardwareBPContextMenuSlot(const QPoint & pos)
|
|||
if(wBPList.bp[wI].active == false)
|
||||
{
|
||||
mHardBPEnableDisableAction->setText(tr("Enable"));
|
||||
wMenu->addAction(mHardBPEnableDisableAction);
|
||||
wMenu.addAction(mHardBPEnableDisableAction);
|
||||
}
|
||||
else if(wBPList.bp[wI].enabled == true)
|
||||
{
|
||||
mHardBPEnableDisableAction->setText(tr("Disable"));
|
||||
wMenu->addAction(mHardBPEnableDisableAction);
|
||||
wMenu.addAction(mHardBPEnableDisableAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
mHardBPEnableDisableAction->setText(tr("Enable"));
|
||||
wMenu->addAction(mHardBPEnableDisableAction);
|
||||
wMenu.addAction(mHardBPEnableDisableAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -334,31 +334,31 @@ void BreakpointsView::hardwareBPContextMenuSlot(const QPoint & pos)
|
|||
|
||||
// Conditional
|
||||
mCurrentType = bp_hardware;
|
||||
wMenu->addAction(mEditBreakpointAction);
|
||||
wMenu->addAction(mHardBPResetHitCountAction);
|
||||
wMenu.addAction(mEditBreakpointAction);
|
||||
wMenu.addAction(mHardBPResetHitCountAction);
|
||||
|
||||
// Separator
|
||||
wMenu->addSeparator();
|
||||
wMenu.addSeparator();
|
||||
|
||||
// Enable All
|
||||
wMenu->addAction(mHardBPEnableAllAction);
|
||||
wMenu.addAction(mHardBPEnableAllAction);
|
||||
|
||||
// Disable All
|
||||
wMenu->addAction(mHardBPDisableAllAction);
|
||||
wMenu.addAction(mHardBPDisableAllAction);
|
||||
|
||||
// Remove All
|
||||
wMenu->addAction(mHardBPRemoveAllAction);
|
||||
wMenu.addAction(mHardBPRemoveAllAction);
|
||||
|
||||
//Copy
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
table->setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
|
||||
wMenu->exec(table->mapToGlobal(pos));
|
||||
wMenu.exec(table->mapToGlobal(pos));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -455,12 +455,12 @@ void BreakpointsView::softwareBPContextMenuSlot(const QPoint & pos)
|
|||
if(table->getRowCount() != 0)
|
||||
{
|
||||
int wI = 0;
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
QMenu wMenu(this);
|
||||
duint wVA = table->getCellContent(table->getInitialSelection(), 0).toULongLong(0, 16);
|
||||
BPMAP wBPList;
|
||||
|
||||
// Remove
|
||||
wMenu->addAction(mSoftBPRemoveAction);
|
||||
wMenu.addAction(mSoftBPRemoveAction);
|
||||
|
||||
// Enable/Disable
|
||||
DbgGetBpList(bp_normal, &wBPList);
|
||||
|
@ -472,17 +472,17 @@ void BreakpointsView::softwareBPContextMenuSlot(const QPoint & pos)
|
|||
if(wBPList.bp[wI].active == false)
|
||||
{
|
||||
mSoftBPEnableDisableAction->setText(tr("Enable"));
|
||||
wMenu->addAction(mSoftBPEnableDisableAction);
|
||||
wMenu.addAction(mSoftBPEnableDisableAction);
|
||||
}
|
||||
else if(wBPList.bp[wI].enabled == true)
|
||||
{
|
||||
mSoftBPEnableDisableAction->setText(tr("Disable"));
|
||||
wMenu->addAction(mSoftBPEnableDisableAction);
|
||||
wMenu.addAction(mSoftBPEnableDisableAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
mSoftBPEnableDisableAction->setText(tr("Enable"));
|
||||
wMenu->addAction(mSoftBPEnableDisableAction);
|
||||
wMenu.addAction(mSoftBPEnableDisableAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -491,31 +491,31 @@ void BreakpointsView::softwareBPContextMenuSlot(const QPoint & pos)
|
|||
|
||||
// Conditional
|
||||
mCurrentType = bp_normal;
|
||||
wMenu->addAction(mEditBreakpointAction);
|
||||
wMenu->addAction(mSoftBPResetHitCountAction);
|
||||
wMenu.addAction(mEditBreakpointAction);
|
||||
wMenu.addAction(mSoftBPResetHitCountAction);
|
||||
|
||||
// Separator
|
||||
wMenu->addSeparator();
|
||||
wMenu.addSeparator();
|
||||
|
||||
// Enable All
|
||||
wMenu->addAction(mSoftBPEnableAllAction);
|
||||
wMenu.addAction(mSoftBPEnableAllAction);
|
||||
|
||||
// Disable All
|
||||
wMenu->addAction(mSoftBPDisableAllAction);
|
||||
wMenu.addAction(mSoftBPDisableAllAction);
|
||||
|
||||
// Remove All
|
||||
wMenu->addAction(mSoftBPRemoveAllAction);
|
||||
wMenu.addAction(mSoftBPRemoveAllAction);
|
||||
|
||||
//Copy
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
table->setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
|
||||
wMenu->exec(table->mapToGlobal(pos));
|
||||
wMenu.exec(table->mapToGlobal(pos));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -612,12 +612,12 @@ void BreakpointsView::memoryBPContextMenuSlot(const QPoint & pos)
|
|||
if(table->getRowCount() != 0)
|
||||
{
|
||||
int wI = 0;
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
QMenu wMenu(this);
|
||||
duint wVA = table->getCellContent(table->getInitialSelection(), 0).toULongLong(0, 16);
|
||||
BPMAP wBPList;
|
||||
|
||||
// Remove
|
||||
wMenu->addAction(mMemBPRemoveAction);
|
||||
wMenu.addAction(mMemBPRemoveAction);
|
||||
|
||||
// Enable/Disable
|
||||
DbgGetBpList(bp_memory, &wBPList);
|
||||
|
@ -629,17 +629,17 @@ void BreakpointsView::memoryBPContextMenuSlot(const QPoint & pos)
|
|||
if(wBPList.bp[wI].active == false)
|
||||
{
|
||||
mMemBPEnableDisableAction->setText(tr("Enable"));
|
||||
wMenu->addAction(mMemBPEnableDisableAction);
|
||||
wMenu.addAction(mMemBPEnableDisableAction);
|
||||
}
|
||||
else if(wBPList.bp[wI].enabled == true)
|
||||
{
|
||||
mMemBPEnableDisableAction->setText(tr("Disable"));
|
||||
wMenu->addAction(mMemBPEnableDisableAction);
|
||||
wMenu.addAction(mMemBPEnableDisableAction);
|
||||
}
|
||||
else
|
||||
{
|
||||
mMemBPEnableDisableAction->setText(tr("Enable"));
|
||||
wMenu->addAction(mMemBPEnableDisableAction);
|
||||
wMenu.addAction(mMemBPEnableDisableAction);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -648,31 +648,31 @@ void BreakpointsView::memoryBPContextMenuSlot(const QPoint & pos)
|
|||
|
||||
// Conditional
|
||||
mCurrentType = bp_memory;
|
||||
wMenu->addAction(mEditBreakpointAction);
|
||||
wMenu->addAction(mMemBPResetHitCountAction);
|
||||
wMenu.addAction(mEditBreakpointAction);
|
||||
wMenu.addAction(mMemBPResetHitCountAction);
|
||||
|
||||
// Separator
|
||||
wMenu->addSeparator();
|
||||
wMenu.addSeparator();
|
||||
|
||||
// Enable All
|
||||
wMenu->addAction(mMemBPEnableAllAction);
|
||||
wMenu.addAction(mMemBPEnableAllAction);
|
||||
|
||||
// Disable All
|
||||
wMenu->addAction(mMemBPDisableAllAction);
|
||||
wMenu.addAction(mMemBPDisableAllAction);
|
||||
|
||||
// Remove All
|
||||
wMenu->addAction(mMemBPRemoveAllAction);
|
||||
wMenu.addAction(mMemBPRemoveAllAction);
|
||||
|
||||
//Copy
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
table->setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
|
||||
wMenu->exec(table->mapToGlobal(pos));
|
||||
wMenu.exec(table->mapToGlobal(pos));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -616,24 +616,24 @@ void CPUDump::contextMenuEvent(QContextMenuEvent* event)
|
|||
|
||||
dsint selectedAddr = rvaToVa(getInitialSelection());
|
||||
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
wMenu->addMenu(mBinaryMenu);
|
||||
wMenu->addMenu(mCopyMenu);
|
||||
QMenu wMenu(this); //create context menu
|
||||
wMenu.addMenu(mBinaryMenu);
|
||||
wMenu.addMenu(mCopyMenu);
|
||||
dsint start = rvaToVa(getSelectionStart());
|
||||
dsint end = rvaToVa(getSelectionEnd());
|
||||
if(DbgFunctions()->PatchInRange(start, end)) //nothing patched in selected range
|
||||
wMenu->addAction(mUndoSelection);
|
||||
wMenu.addAction(mUndoSelection);
|
||||
if(DbgMemIsValidReadPtr(start) && DbgMemFindBaseAddr(start, 0) == DbgMemFindBaseAddr(DbgValFromString("csp"), 0))
|
||||
wMenu->addAction(mFollowStack);
|
||||
wMenu->addAction(mFollowInDisasm);
|
||||
wMenu.addAction(mFollowStack);
|
||||
wMenu.addAction(mFollowInDisasm);
|
||||
|
||||
duint ptr = 0;
|
||||
DbgMemRead(selectedAddr, (unsigned char*)&ptr, sizeof(duint));
|
||||
if(DbgMemIsValidReadPtr(ptr))
|
||||
{
|
||||
wMenu->addAction(mFollowData);
|
||||
wMenu->addAction(mFollowDataDump);
|
||||
wMenu->addMenu(mFollowInDumpMenu);
|
||||
wMenu.addAction(mFollowData);
|
||||
wMenu.addAction(mFollowDataDump);
|
||||
wMenu.addMenu(mFollowInDumpMenu);
|
||||
}
|
||||
|
||||
mGotoMenu->removeAction(mGotoPrevious);
|
||||
|
@ -645,24 +645,24 @@ void CPUDump::contextMenuEvent(QContextMenuEvent* event)
|
|||
if(historyHasNext())
|
||||
mGotoMenu->addAction(mGotoNext);
|
||||
|
||||
wMenu->addAction(mSetLabelAction);
|
||||
wMenu.addAction(mSetLabelAction);
|
||||
if(getSizeOf(mDescriptor.at(0).data.itemSize) <= sizeof(duint))
|
||||
wMenu->addAction(mModifyValueAction);
|
||||
wMenu->addMenu(mBreakpointMenu);
|
||||
wMenu->addAction(mFindPatternAction);
|
||||
wMenu->addAction(mFindReferencesAction);
|
||||
wMenu->addAction(mYaraAction);
|
||||
wMenu->addAction(mDataCopyAction);
|
||||
wMenu->addAction(mSyncWithExpression);
|
||||
wMenu->addAction(mEntropy);
|
||||
wMenu->addMenu(mGotoMenu);
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(mHexMenu);
|
||||
wMenu->addMenu(mTextMenu);
|
||||
wMenu->addMenu(mIntegerMenu);
|
||||
wMenu->addMenu(mFloatMenu);
|
||||
wMenu->addAction(mAddressAction);
|
||||
wMenu->addAction(mDisassemblyAction);
|
||||
wMenu.addAction(mModifyValueAction);
|
||||
wMenu.addMenu(mBreakpointMenu);
|
||||
wMenu.addAction(mFindPatternAction);
|
||||
wMenu.addAction(mFindReferencesAction);
|
||||
wMenu.addAction(mYaraAction);
|
||||
wMenu.addAction(mDataCopyAction);
|
||||
wMenu.addAction(mSyncWithExpression);
|
||||
wMenu.addAction(mEntropy);
|
||||
wMenu.addMenu(mGotoMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(mHexMenu);
|
||||
wMenu.addMenu(mTextMenu);
|
||||
wMenu.addMenu(mIntegerMenu);
|
||||
wMenu.addMenu(mFloatMenu);
|
||||
wMenu.addAction(mAddressAction);
|
||||
wMenu.addAction(mDisassemblyAction);
|
||||
|
||||
QList<QString> tabNames;
|
||||
mMultiDump->getTabNames(tabNames);
|
||||
|
@ -698,11 +698,10 @@ void CPUDump::contextMenuEvent(QContextMenuEvent* event)
|
|||
mMemoryRemove->setVisible(false);
|
||||
}
|
||||
|
||||
wMenu->addSeparator();
|
||||
wMenu->addActions(mPluginMenu->actions());
|
||||
wMenu.addSeparator();
|
||||
wMenu.addActions(mPluginMenu->actions());
|
||||
|
||||
wMenu->exec(event->globalPos()); //execute context menu
|
||||
delete wMenu;
|
||||
wMenu.exec(event->globalPos()); //execute context menu
|
||||
}
|
||||
|
||||
void CPUDump::mouseDoubleClickEvent(QMouseEvent* event)
|
||||
|
|
|
@ -360,10 +360,10 @@ int CPUInfoBox::followInDump(dsint wVA)
|
|||
|
||||
void CPUInfoBox::contextMenuSlot(QPoint pos)
|
||||
{
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
QMenu* wFollowMenu = new QMenu(tr("&Follow in Dump"), this);
|
||||
setupFollowMenu(wFollowMenu, curAddr);
|
||||
wMenu->addMenu(wFollowMenu);
|
||||
QMenu wMenu(this); //create context menu
|
||||
QMenu wFollowMenu(tr("&Follow in Dump"), this);
|
||||
setupFollowMenu(&wFollowMenu, curAddr);
|
||||
wMenu.addMenu(&wFollowMenu);
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
setupCopyMenu(&wCopyMenu);
|
||||
if(DbgIsDebugging())
|
||||
|
@ -376,10 +376,10 @@ void CPUInfoBox::contextMenuSlot(QPoint pos)
|
|||
}
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
wMenu->exec(mapToGlobal(pos)); //execute context menu
|
||||
wMenu.exec(mapToGlobal(pos)); //execute context menu
|
||||
}
|
||||
|
||||
void CPUInfoBox::copyAddress()
|
||||
|
|
|
@ -456,23 +456,23 @@ void CPUStack::contextMenuEvent(QContextMenuEvent* event)
|
|||
if(!DbgIsDebugging())
|
||||
return;
|
||||
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
wMenu->addAction(mModifyAction);
|
||||
wMenu->addMenu(mBinaryMenu);
|
||||
wMenu->addMenu(mBreakpointMenu);
|
||||
QMenu wMenu(this); //create context menu
|
||||
wMenu.addAction(mModifyAction);
|
||||
wMenu.addMenu(mBinaryMenu);
|
||||
wMenu.addMenu(mBreakpointMenu);
|
||||
dsint start = rvaToVa(getSelectionStart());
|
||||
dsint end = rvaToVa(getSelectionEnd());
|
||||
if(DbgFunctions()->PatchInRange(start, end)) //nothing patched in selected range
|
||||
wMenu->addAction(mUndoSelection);
|
||||
wMenu->addAction(mFindPatternAction);
|
||||
wMenu->addAction(mGotoSp);
|
||||
wMenu->addAction(mGotoBp);
|
||||
wMenu->addAction(mFreezeStack);
|
||||
wMenu->addAction(mGotoExpression);
|
||||
wMenu.addAction(mUndoSelection);
|
||||
wMenu.addAction(mFindPatternAction);
|
||||
wMenu.addAction(mGotoSp);
|
||||
wMenu.addAction(mGotoBp);
|
||||
wMenu.addAction(mFreezeStack);
|
||||
wMenu.addAction(mGotoExpression);
|
||||
if(historyHasPrev())
|
||||
wMenu->addAction(mGotoPrevious);
|
||||
wMenu.addAction(mGotoPrevious);
|
||||
if(historyHasNext())
|
||||
wMenu->addAction(mGotoNext);
|
||||
wMenu.addAction(mGotoNext);
|
||||
|
||||
duint selectedData;
|
||||
if(mMemPage->read((byte_t*)&selectedData, getInitialSelection(), sizeof(duint)))
|
||||
|
@ -481,14 +481,14 @@ void CPUStack::contextMenuEvent(QContextMenuEvent* event)
|
|||
duint stackBegin = mMemPage->getBase();
|
||||
duint stackEnd = stackBegin + mMemPage->getSize();
|
||||
if(selectedData >= stackBegin && selectedData < stackEnd)
|
||||
wMenu->addAction(mFollowStack);
|
||||
wMenu->addAction(mFollowDisasm);
|
||||
wMenu->addAction(mFollowDump);
|
||||
wMenu->addMenu(mFollowInDumpMenu);
|
||||
wMenu.addAction(mFollowStack);
|
||||
wMenu.addAction(mFollowDisasm);
|
||||
wMenu.addAction(mFollowDump);
|
||||
wMenu.addMenu(mFollowInDumpMenu);
|
||||
}
|
||||
|
||||
wMenu->addSeparator();
|
||||
wMenu->addActions(mPluginMenu->actions());
|
||||
wMenu.addSeparator();
|
||||
wMenu.addActions(mPluginMenu->actions());
|
||||
|
||||
|
||||
if(DbgGetBpxTypeAt(selectedAddr) & bp_hardware) //hardware breakpoint set
|
||||
|
@ -516,7 +516,7 @@ void CPUStack::contextMenuEvent(QContextMenuEvent* event)
|
|||
mBreakpointMemoryRemove->setVisible(false);
|
||||
}
|
||||
|
||||
wMenu->exec(event->globalPos());
|
||||
wMenu.exec(event->globalPos());
|
||||
}
|
||||
|
||||
void CPUStack::mouseDoubleClickEvent(QMouseEvent* event)
|
||||
|
|
|
@ -60,20 +60,20 @@ void CallStackView::contextMenuSlot(const QPoint pos)
|
|||
{
|
||||
if(!DbgIsDebugging())
|
||||
return;
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
wMenu->addAction(mFollowAddress);
|
||||
wMenu->addAction(mFollowTo);
|
||||
QMenu wMenu(this); //create context menu
|
||||
wMenu.addAction(mFollowAddress);
|
||||
wMenu.addAction(mFollowTo);
|
||||
QString wStr = getCellContent(getInitialSelection(), 2);
|
||||
if(wStr.length())
|
||||
wMenu->addAction(mFollowFrom);
|
||||
wMenu.addAction(mFollowFrom);
|
||||
QMenu wCopyMenu("&Copy", this);
|
||||
setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
wMenu->exec(mapToGlobal(pos)); //execute context menu
|
||||
wMenu.exec(mapToGlobal(pos)); //execute context menu
|
||||
}
|
||||
|
||||
void CallStackView::doubleClickedSlot()
|
||||
|
|
|
@ -58,19 +58,18 @@ void LogView::refreshShortcutsSlot()
|
|||
|
||||
void LogView::contextMenuEvent(QContextMenuEvent* event)
|
||||
{
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
wMenu->addAction(actionClear);
|
||||
wMenu->addAction(actionSelectAll);
|
||||
wMenu->addAction(actionCopy);
|
||||
wMenu->addAction(actionSave);
|
||||
QMenu wMenu(this);
|
||||
wMenu.addAction(actionClear);
|
||||
wMenu.addAction(actionSelectAll);
|
||||
wMenu.addAction(actionCopy);
|
||||
wMenu.addAction(actionSave);
|
||||
if(getLoggingEnabled())
|
||||
actionToggleLogging->setText(tr("Disable &Logging"));
|
||||
else
|
||||
actionToggleLogging->setText(tr("Enable &Logging"));
|
||||
wMenu->addAction(actionToggleLogging);
|
||||
wMenu.addAction(actionToggleLogging);
|
||||
|
||||
wMenu->exec(event->globalPos());
|
||||
delete wMenu;
|
||||
wMenu.exec(event->globalPos());
|
||||
}
|
||||
|
||||
void LogView::addMsgToLogSlot(QString msg)
|
||||
|
|
|
@ -131,24 +131,24 @@ void MemoryMapView::contextMenuSlot(const QPoint & pos)
|
|||
{
|
||||
if(!DbgIsDebugging())
|
||||
return;
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
wMenu->addAction(mDumpMemory);
|
||||
wMenu->addAction(mFollowDisassembly);
|
||||
wMenu->addAction(mFollowDump);
|
||||
wMenu->addAction(mYara);
|
||||
wMenu->addAction(mEntropy);
|
||||
wMenu->addAction(mFindPattern);
|
||||
wMenu->addAction(mSwitchView);
|
||||
wMenu->addSeparator();
|
||||
wMenu->addAction(mPageMemoryRights);
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(mBreakpointMenu);
|
||||
QMenu wMenu(this); //create context menu
|
||||
wMenu.addAction(mDumpMemory);
|
||||
wMenu.addAction(mFollowDisassembly);
|
||||
wMenu.addAction(mFollowDump);
|
||||
wMenu.addAction(mYara);
|
||||
wMenu.addAction(mEntropy);
|
||||
wMenu.addAction(mFindPattern);
|
||||
wMenu.addAction(mSwitchView);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addAction(mPageMemoryRights);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(mBreakpointMenu);
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
|
||||
QString wStr = getCellContent(getInitialSelection(), 0);
|
||||
|
@ -172,7 +172,7 @@ void MemoryMapView::contextMenuSlot(const QPoint & pos)
|
|||
mMemoryRemove->setVisible(false);
|
||||
}
|
||||
|
||||
wMenu->exec(mapToGlobal(pos)); //execute context menu
|
||||
wMenu.exec(mapToGlobal(pos)); //execute context menu
|
||||
}
|
||||
|
||||
QString MemoryMapView::getProtectionString(DWORD Protect)
|
||||
|
|
|
@ -68,17 +68,17 @@ void SEHChainView::contextMenuSlot(const QPoint pos)
|
|||
{
|
||||
if(!DbgIsDebugging())
|
||||
return;
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
wMenu->addAction(mFollowAddress);
|
||||
wMenu->addAction(mFollowHandler);
|
||||
QMenu wMenu(this); //create context menu
|
||||
wMenu.addAction(mFollowAddress);
|
||||
wMenu.addAction(mFollowHandler);
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
wMenu->exec(mapToGlobal(pos)); //execute context menu
|
||||
wMenu.exec(mapToGlobal(pos)); //execute context menu
|
||||
}
|
||||
|
||||
void SEHChainView::doubleClickedSlot()
|
||||
|
|
|
@ -279,23 +279,23 @@ QString ScriptView::paintContent(QPainter* painter, dsint rowBase, int rowOffset
|
|||
|
||||
void ScriptView::contextMenuSlot(const QPoint & pos)
|
||||
{
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
wMenu->addMenu(mLoadMenu);
|
||||
QMenu wMenu(this);
|
||||
wMenu.addMenu(mLoadMenu);
|
||||
if(getRowCount())
|
||||
{
|
||||
wMenu->addAction(mScriptReload);
|
||||
wMenu->addAction(mScriptUnload);
|
||||
wMenu->addSeparator();
|
||||
wMenu->addAction(mScriptBpToggle);
|
||||
wMenu->addAction(mScriptRunCursor);
|
||||
wMenu->addAction(mScriptStep);
|
||||
wMenu->addAction(mScriptRun);
|
||||
wMenu->addAction(mScriptAbort);
|
||||
wMenu->addAction(mScriptNewIp);
|
||||
wMenu.addAction(mScriptReload);
|
||||
wMenu.addAction(mScriptUnload);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addAction(mScriptBpToggle);
|
||||
wMenu.addAction(mScriptRunCursor);
|
||||
wMenu.addAction(mScriptStep);
|
||||
wMenu.addAction(mScriptRun);
|
||||
wMenu.addAction(mScriptAbort);
|
||||
wMenu.addAction(mScriptNewIp);
|
||||
}
|
||||
wMenu->addSeparator();
|
||||
wMenu->addAction(mScriptCmdExec);
|
||||
wMenu->exec(mapToGlobal(pos));
|
||||
wMenu.addSeparator();
|
||||
wMenu.addAction(mScriptCmdExec);
|
||||
wMenu.exec(mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void ScriptView::mouseDoubleClickEvent(QMouseEvent* event)
|
||||
|
|
|
@ -20,14 +20,14 @@ SourceView::SourceView(QString path, int line, StdTable* parent) : StdTable(pare
|
|||
|
||||
void SourceView::contextMenuSlot(const QPoint & pos)
|
||||
{
|
||||
QMenu* wMenu = new QMenu(this);
|
||||
QMenu wMenu(this);
|
||||
|
||||
int line = getInitialSelection() + 1;
|
||||
dsint addr = DbgFunctions()->GetAddrFromLine(mSourcePath.toUtf8().constData(), line);
|
||||
if(addr)
|
||||
wMenu->addAction(mFollowInDisasm);
|
||||
wMenu.addAction(mFollowInDisasm);
|
||||
|
||||
wMenu->exec(mapToGlobal(pos));
|
||||
wMenu.exec(mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void SourceView::setupContextMenu()
|
||||
|
|
|
@ -8,27 +8,27 @@ void ThreadView::contextMenuSlot(const QPoint & pos)
|
|||
if(!DbgIsDebugging())
|
||||
return;
|
||||
|
||||
QMenu* wMenu = new QMenu(this); //create context menu
|
||||
wMenu->addAction(mSwitchThread);
|
||||
wMenu->addAction(mSuspendThread);
|
||||
wMenu->addAction(mResumeThread);
|
||||
wMenu->addAction(mKillThread);
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(mSetPriority);
|
||||
QMenu wMenu(this); //create context menu
|
||||
wMenu.addAction(mSwitchThread);
|
||||
wMenu.addAction(mSuspendThread);
|
||||
wMenu.addAction(mResumeThread);
|
||||
wMenu.addAction(mKillThread);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(mSetPriority);
|
||||
bool ok;
|
||||
ULONGLONG entry = getCellContent(getInitialSelection(), 2).toULongLong(&ok, 16);
|
||||
if(ok && DbgMemIsValidReadPtr(entry))
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addAction(mGoToThreadEntry);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addAction(mGoToThreadEntry);
|
||||
}
|
||||
wMenu->addSeparator();
|
||||
wMenu.addSeparator();
|
||||
QMenu wCopyMenu(tr("&Copy"), this);
|
||||
setupCopyMenu(&wCopyMenu);
|
||||
if(wCopyMenu.actions().length())
|
||||
{
|
||||
wMenu->addSeparator();
|
||||
wMenu->addMenu(&wCopyMenu);
|
||||
wMenu.addSeparator();
|
||||
wMenu.addMenu(&wCopyMenu);
|
||||
}
|
||||
|
||||
|
||||
|
@ -55,7 +55,7 @@ void ThreadView::contextMenuSlot(const QPoint & pos)
|
|||
else if(priority == "Lowest")
|
||||
mSetPriorityLowest->setChecked(true);
|
||||
|
||||
wMenu->exec(mapToGlobal(pos)); //execute context menu
|
||||
wMenu.exec(mapToGlobal(pos)); //execute context menu
|
||||
}
|
||||
|
||||
void ThreadView::GoToThreadEntry()
|
||||
|
|
Loading…
Reference in New Issue