1
0
Fork 0

GUI: fixed memory leaks with QMenu (#660)

This commit is contained in:
mrexodia 2016-05-25 11:27:00 +02:00
parent a8f70ccc01
commit 22d026bcdd
13 changed files with 172 additions and 174 deletions

View File

@ -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()

View File

@ -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));
}
}

View File

@ -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));
}
}

View File

@ -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)

View File

@ -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()

View File

@ -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)

View File

@ -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()

View File

@ -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)

View File

@ -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)

View File

@ -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()

View File

@ -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)

View File

@ -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()

View File

@ -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()