Merge branch 'torusrxxx-patch00000092' into development
This commit is contained in:
commit
fba7af6bcd
|
|
@ -290,8 +290,23 @@ bool SymAddrFromName(const char* Name, duint* Address)
|
|||
return false;
|
||||
|
||||
// Skip 'OrdinalXXX'
|
||||
if(!_strnicmp(Name, "Ordinal", 7))
|
||||
return false;
|
||||
if(_strnicmp(Name, "Ordinal#", 8) == 0 && strlen(Name) > 8)
|
||||
{
|
||||
const char* Name1 = Name + 8;
|
||||
bool notNonNumbersFound = true;
|
||||
do
|
||||
{
|
||||
if(!(Name1[0] >= '0' && Name1[0] <= '9'))
|
||||
{
|
||||
notNonNumbersFound = false;
|
||||
break;
|
||||
}
|
||||
Name1++;
|
||||
}
|
||||
while(Name1[0] != 0);
|
||||
if(notNonNumbersFound)
|
||||
return false;
|
||||
}
|
||||
|
||||
//TODO: refactor this in a function because this pattern will become common
|
||||
std::vector<duint> mods;
|
||||
|
|
|
|||
|
|
@ -999,3 +999,28 @@ void AbstractStdTable::reloadData()
|
|||
}
|
||||
AbstractTableView::reloadData();
|
||||
}
|
||||
|
||||
duint AbstractStdTable::getDisassemblyPopupAddress(int mousex, int mousey)
|
||||
{
|
||||
if(!bDisassemblyPopupEnabled) //No disassembly popup is meaningful for this table
|
||||
return 0;
|
||||
int c = getColumnIndexFromX(mousex);
|
||||
int r = getTableOffset() + getIndexOffsetFromY(transY(mousey));
|
||||
if(r < getRowCount())
|
||||
{
|
||||
QString cell = getCellContent(r, c);
|
||||
duint addr;
|
||||
bool ok = false;
|
||||
#ifdef _WIN64
|
||||
addr = cell.toULongLong(&ok, 16);
|
||||
#else //x86
|
||||
addr = cell.toULong(&ok, 16);
|
||||
#endif //_WIN64
|
||||
if(!ok)
|
||||
return 0;
|
||||
else
|
||||
return addr;
|
||||
}
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,6 +44,7 @@ public:
|
|||
virtual QString getCellContent(int r, int c) = 0;
|
||||
virtual bool isValidIndex(int r, int c) = 0;
|
||||
virtual void sortRows(int column, bool ascending) = 0;
|
||||
duint getDisassemblyPopupAddress(int mousex, int mousey) override;
|
||||
|
||||
//context menu helpers
|
||||
void setupCopyMenu(QMenu* copyMenu);
|
||||
|
|
@ -67,6 +68,11 @@ public:
|
|||
bAddressLabel = addressLabel;
|
||||
}
|
||||
|
||||
bool setDisassemblyPopupEnabled(bool enabled)
|
||||
{
|
||||
return bDisassemblyPopupEnabled = enabled;
|
||||
}
|
||||
|
||||
signals:
|
||||
void selectionChangedSignal(int index);
|
||||
void keyPressedSignal(QKeyEvent* event);
|
||||
|
|
@ -135,4 +141,5 @@ protected:
|
|||
QString mHighlightText;
|
||||
int mAddressColumn = -1;
|
||||
bool bAddressLabel = true;
|
||||
bool bDisassemblyPopupEnabled = true;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include "ColumnReorderDialog.h"
|
||||
#include "CachedFontMetrics.h"
|
||||
#include "Bridge.h"
|
||||
#include "DisassemblyPopup.h"
|
||||
#include <windows.h>
|
||||
|
||||
int AbstractTableView::mMouseWheelScrollDelta = 0;
|
||||
|
|
@ -28,7 +29,8 @@ void AbstractTableScrollBar::leaveEvent(QEvent* event)
|
|||
|
||||
AbstractTableView::AbstractTableView(QWidget* parent)
|
||||
: QAbstractScrollArea(parent),
|
||||
mFontMetrics(nullptr)
|
||||
mFontMetrics(nullptr),
|
||||
mDisassemblyPopup(nullptr)
|
||||
{
|
||||
// Class variable initialization
|
||||
mTableOffset = 0;
|
||||
|
|
@ -369,16 +371,21 @@ void AbstractTableView::mouseMoveEvent(QMouseEvent* event)
|
|||
mColResizeData.splitHandle = true;
|
||||
mGuiState = AbstractTableView::ReadyToResize;
|
||||
}
|
||||
if((wHandle == false) && (wHasCursor == true))
|
||||
else if((wHandle == false) && (wHasCursor == true))
|
||||
{
|
||||
unsetCursor();
|
||||
mColResizeData.splitHandle = false;
|
||||
mGuiState = AbstractTableView::NoState;
|
||||
}
|
||||
else if(wHandle == false && wHasCursor == false)
|
||||
{
|
||||
if(event->y() > getHeaderHeight() && DbgIsDebugging())
|
||||
ShowDisassemblyPopup(getDisassemblyPopupAddress(event->x(), event->y()), event->x(), event->y());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
QWidget::mouseMoveEvent(event);
|
||||
QAbstractScrollArea::mouseMoveEvent(event);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -575,6 +582,7 @@ void AbstractTableView::mouseDoubleClickEvent(QMouseEvent* event)
|
|||
*
|
||||
* @return Nothing.
|
||||
*/
|
||||
|
||||
void AbstractTableView::wheelEvent(QWheelEvent* event)
|
||||
{
|
||||
int numDegrees = event->delta() / 8;
|
||||
|
|
@ -614,7 +622,13 @@ void AbstractTableView::resizeEvent(QResizeEvent* event)
|
|||
emit viewableRowsChanged(getViewableRowsCount());
|
||||
mShouldReload = true;
|
||||
}
|
||||
QWidget::resizeEvent(event);
|
||||
QAbstractScrollArea::resizeEvent(event);
|
||||
}
|
||||
|
||||
void AbstractTableView::leaveEvent(QEvent* event)
|
||||
{
|
||||
ShowDisassemblyPopup(0, 0, 0);
|
||||
QAbstractScrollArea::leaveEvent(event);
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
|
|
@ -1256,3 +1270,41 @@ void AbstractTableView::prepareData()
|
|||
dsint wRemainingRowsCount = getRowCount() - mTableOffset;
|
||||
mNbrOfLineToPrint = (dsint)wRemainingRowsCount > (dsint)wViewableRowsCount ? (int)wViewableRowsCount : (int)wRemainingRowsCount;
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
DisassemblyPopup
|
||||
************************************************************************************/
|
||||
duint AbstractTableView::getDisassemblyPopupAddress(int mousex, int mousey)
|
||||
{
|
||||
Q_UNUSED(mousex)
|
||||
Q_UNUSED(mousey)
|
||||
return 0; //Default is no disassembly popup
|
||||
}
|
||||
|
||||
void AbstractTableView::ShowDisassemblyPopup(duint addr, int x, int y)
|
||||
{
|
||||
if(!addr)
|
||||
{
|
||||
if(mDisassemblyPopup)
|
||||
mDisassemblyPopup->hide();
|
||||
return;
|
||||
}
|
||||
if(!mDisassemblyPopup)
|
||||
mDisassemblyPopup = new DisassemblyPopup(this);
|
||||
if(mDisassemblyPopup->getAddress() == addr)
|
||||
return;
|
||||
if(DbgFunctions()->MemIsCodePage(addr, false))
|
||||
{
|
||||
mDisassemblyPopup->move(mapToGlobal(QPoint(x + 20, y + fontMetrics().height() * 2)));
|
||||
mDisassemblyPopup->setAddress(addr);
|
||||
mDisassemblyPopup->show();
|
||||
}
|
||||
else
|
||||
mDisassemblyPopup->hide();
|
||||
}
|
||||
|
||||
void AbstractTableView::hideEvent(QHideEvent* event)
|
||||
{
|
||||
ShowDisassemblyPopup(0, 0, 0);
|
||||
QAbstractScrollArea::hideEvent(event);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include "ActionHelpers.h"
|
||||
|
||||
class CachedFontMetrics;
|
||||
class DisassemblyPopup;
|
||||
|
||||
//Hacky class that fixes a really annoying cursor problem
|
||||
class AbstractTableScrollBar : public QScrollBar
|
||||
|
|
@ -64,6 +65,8 @@ public:
|
|||
void wheelEvent(QWheelEvent* event) override;
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
void keyPressEvent(QKeyEvent* event) override;
|
||||
void leaveEvent(QEvent* event) override;
|
||||
void hideEvent(QHideEvent* event) override;
|
||||
|
||||
// ScrollBar Management
|
||||
virtual dsint sliderMovedHook(int type, dsint value, dsint delta);
|
||||
|
|
@ -120,6 +123,8 @@ public:
|
|||
// Update/Reload/Refresh/Repaint
|
||||
virtual void prepareData();
|
||||
|
||||
virtual duint getDisassemblyPopupAddress(int mousex, int mousey);
|
||||
|
||||
signals:
|
||||
void enterPressedSignal();
|
||||
void headerButtonPressed(int col);
|
||||
|
|
@ -218,6 +223,10 @@ protected:
|
|||
// Font metrics
|
||||
CachedFontMetrics* mFontMetrics;
|
||||
void invalidateCachedFont();
|
||||
|
||||
// Disassembly Popup
|
||||
DisassemblyPopup* mDisassemblyPopup;
|
||||
void ShowDisassemblyPopup(duint addr, int x, int y);
|
||||
};
|
||||
|
||||
#endif // ABSTRACTTABLEVIEW_H
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
#include "QBeaEngine.h"
|
||||
#include "MemoryPage.h"
|
||||
|
||||
Disassembly::Disassembly(QWidget* parent) : AbstractTableView(parent), mDisassemblyPopup(this)
|
||||
Disassembly::Disassembly(QWidget* parent) : AbstractTableView(parent)
|
||||
{
|
||||
mMemPage = new MemoryPage(0, 0);
|
||||
|
||||
|
|
@ -32,11 +32,13 @@ Disassembly::Disassembly(QWidget* parent) : AbstractTableView(parent), mDisassem
|
|||
tokenizerConfigUpdatedSlot();
|
||||
|
||||
mCodeFoldingManager = nullptr;
|
||||
duint setting;
|
||||
if(BridgeSettingGetUint("Gui", "DisableBranchDestinationPreview", &setting))
|
||||
mPopupEnabled = !setting;
|
||||
else
|
||||
mPopupEnabled = true;
|
||||
/*
|
||||
duint setting;
|
||||
if(BridgeSettingGetUint("Gui", "DisableBranchDestinationPreview", &setting))
|
||||
mPopupEnabled = !setting;
|
||||
else
|
||||
mPopupEnabled = true;
|
||||
*/
|
||||
mIsLastInstDisplayed = false;
|
||||
|
||||
mGuiState = Disassembly::NoState;
|
||||
|
|
@ -674,44 +676,40 @@ void Disassembly::mouseMoveEvent(QMouseEvent* event)
|
|||
verticalScrollBar()->triggerAction(QAbstractSlider::SliderSingleStepSub);
|
||||
}
|
||||
}
|
||||
else if(mGuiState == Disassembly::NoState)
|
||||
{
|
||||
if(!mHighlightingMode && mPopupEnabled)
|
||||
{
|
||||
bool popupShown = false;
|
||||
if(y > getHeaderHeight() && getColumnIndexFromX(event->x()) == 2)
|
||||
{
|
||||
int rowOffset = getIndexOffsetFromY(transY(y));
|
||||
if(rowOffset < mInstBuffer.size())
|
||||
{
|
||||
CapstoneTokenizer::SingleToken token;
|
||||
auto & instruction = mInstBuffer.at(rowOffset);
|
||||
if(CapstoneTokenizer::TokenFromX(instruction.tokens, token, event->x(), mFontMetrics))
|
||||
{
|
||||
duint addr = token.value.value;
|
||||
bool isCodePage = DbgFunctions()->MemIsCodePage(addr, false);
|
||||
if(!isCodePage && instruction.branchDestination)
|
||||
{
|
||||
addr = instruction.branchDestination;
|
||||
isCodePage = DbgFunctions()->MemIsCodePage(addr, false);
|
||||
}
|
||||
if(isCodePage && (addr - mMemPage->getBase() < mInstBuffer.front().rva || addr - mMemPage->getBase() > mInstBuffer.back().rva))
|
||||
{
|
||||
ShowDisassemblyPopup(addr, event->x(), y);
|
||||
popupShown = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(popupShown == false)
|
||||
ShowDisassemblyPopup(0, 0, 0); // hide popup
|
||||
}
|
||||
}
|
||||
|
||||
if(wAccept == true)
|
||||
AbstractTableView::mouseMoveEvent(event);
|
||||
}
|
||||
|
||||
duint Disassembly::getDisassemblyPopupAddress(int mousex, int mousey)
|
||||
{
|
||||
if(mHighlightingMode)
|
||||
return 0; //Don't show this in highlight mode
|
||||
if(getColumnIndexFromX(mousex) != 2)
|
||||
return 0; //Disassembly popup for other column is undefined
|
||||
int rowOffset = getIndexOffsetFromY(transY(mousey));
|
||||
if(rowOffset < mInstBuffer.size())
|
||||
{
|
||||
CapstoneTokenizer::SingleToken token;
|
||||
auto & instruction = mInstBuffer.at(rowOffset);
|
||||
if(CapstoneTokenizer::TokenFromX(instruction.tokens, token, mousex, mFontMetrics))
|
||||
{
|
||||
duint addr = token.value.value;
|
||||
bool isCodePage = DbgFunctions()->MemIsCodePage(addr, false);
|
||||
if(!isCodePage && instruction.branchDestination)
|
||||
{
|
||||
addr = instruction.branchDestination;
|
||||
isCodePage = DbgFunctions()->MemIsCodePage(addr, false);
|
||||
}
|
||||
if(isCodePage && (addr - mMemPage->getBase() < mInstBuffer.front().rva || addr - mMemPage->getBase() > mInstBuffer.back().rva))
|
||||
{
|
||||
return addr;
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This method has been reimplemented. It manages the following actions:
|
||||
* - Multi-rows selection
|
||||
|
|
@ -838,12 +836,6 @@ void Disassembly::mouseReleaseEvent(QMouseEvent* event)
|
|||
AbstractTableView::mouseReleaseEvent(event);
|
||||
}
|
||||
|
||||
void Disassembly::leaveEvent(QEvent* event)
|
||||
{
|
||||
ShowDisassemblyPopup(0, 0, 0);
|
||||
AbstractTableView::leaveEvent(event);
|
||||
}
|
||||
|
||||
/************************************************************************************
|
||||
Keyboard Management
|
||||
************************************************************************************/
|
||||
|
|
@ -2142,21 +2134,6 @@ void Disassembly::unfold(dsint rva)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void Disassembly::ShowDisassemblyPopup(duint addr, int x, int y)
|
||||
{
|
||||
if(mDisassemblyPopup.getAddress() == addr)
|
||||
return;
|
||||
if(DbgMemIsValidReadPtr(addr))
|
||||
{
|
||||
mDisassemblyPopup.move(mapToGlobal(QPoint(x + 20, y + mFontMetrics->height() * 2)));
|
||||
mDisassemblyPopup.setAddress(addr);
|
||||
mDisassemblyPopup.show();
|
||||
}
|
||||
else
|
||||
mDisassemblyPopup.hide();
|
||||
}
|
||||
|
||||
bool Disassembly::hightlightToken(const CapstoneTokenizer::SingleToken & token)
|
||||
{
|
||||
mHighlightToken = token;
|
||||
|
|
|
|||
|
|
@ -2,10 +2,9 @@
|
|||
#define DISASSEMBLY_H
|
||||
|
||||
#include "AbstractTableView.h"
|
||||
#include "DisassemblyPopup.h"
|
||||
#include "QBeaEngine.h"
|
||||
|
||||
class CodeFoldingHelper;
|
||||
class QBeaEngine;
|
||||
class MemoryPage;
|
||||
|
||||
class Disassembly : public AbstractTableView
|
||||
|
|
@ -26,7 +25,6 @@ public:
|
|||
void mouseMoveEvent(QMouseEvent* event) override;
|
||||
void mousePressEvent(QMouseEvent* event) override;
|
||||
void mouseReleaseEvent(QMouseEvent* event) override;
|
||||
void leaveEvent(QEvent* event) override;
|
||||
|
||||
// Keyboard Management
|
||||
void keyPressEvent(QKeyEvent* event) override;
|
||||
|
|
@ -103,8 +101,8 @@ public:
|
|||
|
||||
//misc
|
||||
void setCodeFoldingManager(CodeFoldingHelper* CodeFoldingManager);
|
||||
duint getDisassemblyPopupAddress(int mousex, int mousey) override;
|
||||
void unfold(dsint rva);
|
||||
void ShowDisassemblyPopup(duint addr, int x, int y);
|
||||
bool hightlightToken(const CapstoneTokenizer::SingleToken & token);
|
||||
bool isHighlightMode() const;
|
||||
|
||||
|
|
@ -243,13 +241,12 @@ protected:
|
|||
duint mRvaDisplayBase;
|
||||
dsint mRvaDisplayPageBase;
|
||||
bool mHighlightingMode;
|
||||
bool mPopupEnabled;
|
||||
//bool mPopupEnabled;
|
||||
MemoryPage* mMemPage;
|
||||
QBeaEngine* mDisasm;
|
||||
bool mShowMnemonicBrief;
|
||||
XREF_INFO mXrefInfo;
|
||||
CodeFoldingHelper* mCodeFoldingManager;
|
||||
DisassemblyPopup mDisassemblyPopup;
|
||||
CapstoneTokenizer::SingleToken mHighlightToken;
|
||||
bool mPermanentHighlightingMode;
|
||||
bool mNoCurrentModuleText;
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <QProgressBar>
|
||||
#include <QLabel>
|
||||
#include "StdSearchListView.h"
|
||||
class DisassemblyPopup;
|
||||
|
||||
class QTabWidget;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,11 +6,8 @@ class StdTableSearchList : public AbstractSearchList
|
|||
public:
|
||||
friend class StdSearchListView;
|
||||
|
||||
StdTableSearchList()
|
||||
{
|
||||
mList = new StdTable();
|
||||
mSearchList = new StdTable();
|
||||
}
|
||||
StdTableSearchList() : mList(new StdTable()), mSearchList(new StdTable()) { }
|
||||
~StdTableSearchList() {delete mList; delete mSearchList; }
|
||||
|
||||
void lock() override { }
|
||||
void unlock() override { }
|
||||
|
|
@ -118,6 +115,12 @@ void StdSearchListView::setSearchStartCol(int col)
|
|||
mSearchStartCol = col;
|
||||
}
|
||||
|
||||
bool StdSearchListView::setDisassemblyPopupEnabled(bool enabled)
|
||||
{
|
||||
stdList()->setDisassemblyPopupEnabled(enabled);
|
||||
return stdSearchList()->setDisassemblyPopupEnabled(enabled);
|
||||
}
|
||||
|
||||
StdTable* StdSearchListView::stdList()
|
||||
{
|
||||
return mSearchListData->mList;
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ public:
|
|||
void enableMultiSelection(bool enabled);
|
||||
void setAddressColumn(int col, bool cipBase = false);
|
||||
void loadColumnFromConfig(const QString & viewName);
|
||||
bool setDisassemblyPopupEnabled(bool enabled);
|
||||
|
||||
public slots:
|
||||
virtual void setRowCount(dsint count);
|
||||
|
|
@ -36,5 +37,4 @@ protected:
|
|||
StdTable* stdList();
|
||||
StdTable* stdSearchList();
|
||||
};
|
||||
|
||||
#endif // STDSEARCHLISTVIEW_H
|
||||
|
|
|
|||
|
|
@ -353,13 +353,15 @@ void CPUDisassembly::setupRightClickContextMenu()
|
|||
});
|
||||
|
||||
mMenuBuilder->addAction(makeShortcutAction(DIcon("highlight.png"), tr("&Highlighting mode"), SLOT(enableHighlightingModeSlot()), "ActionHighlightingMode"));
|
||||
QAction* togglePreview = makeShortcutAction(DIcon("branchpreview.png"), tr("Disable Branch Destination Preview"), SLOT(togglePreviewSlot()), "ActionToggleDestinationPreview");
|
||||
mMenuBuilder->addAction(togglePreview, [this, togglePreview](QMenu*)
|
||||
{
|
||||
togglePreview->setText(mPopupEnabled ? tr("Disable Branch Destination Preview") : tr("Enable Branch Destination Preview"));
|
||||
return false; //hide this menu from the user, but keep the shortcut working
|
||||
});
|
||||
|
||||
//The following code to manage branch preview has been disabled and will be implemented in a setting instead.
|
||||
/*
|
||||
QAction* togglePreview = makeShortcutAction(DIcon("branchpreview.png"), tr("Disable Branch Destination Preview"), SLOT(togglePreviewSlot()), "ActionToggleDestinationPreview");
|
||||
mMenuBuilder->addAction(togglePreview, [this, togglePreview](QMenu*)
|
||||
{
|
||||
togglePreview->setText(mPopupEnabled ? tr("Disable Branch Destination Preview") : tr("Enable Branch Destination Preview"));
|
||||
return false; //hide this menu from the user, but keep the shortcut working
|
||||
});
|
||||
*/
|
||||
MenuBuilder* labelMenu = new MenuBuilder(this);
|
||||
labelMenu->addAction(makeShortcutAction(tr("Label Current Address"), SLOT(setLabelSlot()), "ActionSetLabel"));
|
||||
QAction* labelAddress = makeShortcutAction(tr("Label"), SLOT(setLabelAddressSlot()), "ActionSetLabelOperand");
|
||||
|
|
@ -1980,7 +1982,7 @@ void CPUDisassembly::graphSlot()
|
|||
if(DbgCmdExecDirect(QString("graph %1").arg(ToPtrString(rvaToVa(getSelectionStart()))).toUtf8().constData()))
|
||||
emit displayGraphWidget();
|
||||
}
|
||||
|
||||
/*
|
||||
void CPUDisassembly::togglePreviewSlot()
|
||||
{
|
||||
if(mPopupEnabled == true)
|
||||
|
|
@ -1988,7 +1990,7 @@ void CPUDisassembly::togglePreviewSlot()
|
|||
mPopupEnabled = !mPopupEnabled;
|
||||
BridgeSettingSetUint("Gui", "DisableBranchDestinationPreview", !mPopupEnabled);
|
||||
}
|
||||
|
||||
*/
|
||||
void CPUDisassembly::analyzeModuleSlot()
|
||||
{
|
||||
DbgCmdExec("cfanal");
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ public slots:
|
|||
void setEncodeTypeRangeSlot();
|
||||
void graphSlot();
|
||||
void analyzeModuleSlot();
|
||||
void togglePreviewSlot();
|
||||
//void togglePreviewSlot();
|
||||
void createThreadSlot();
|
||||
void copyTokenTextSlot();
|
||||
void copyTokenValueSlot();
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ void CallStackView::updateCallStack()
|
|||
setCellContent(i, 5, tr("System"));
|
||||
break;
|
||||
default:
|
||||
setCellContent(i, 5, QString("%1").arg(party));
|
||||
setCellContent(i, 5, QString::number(party));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ HandlesView::HandlesView(QWidget* parent) : QWidget(parent)
|
|||
mHandlesTable->setInternalTitle("Handles");
|
||||
mHandlesTable->mSearchStartCol = 0;
|
||||
mHandlesTable->setDrawDebugOnly(true);
|
||||
mHandlesTable->setDisassemblyPopupEnabled(false);
|
||||
int wCharWidth = mHandlesTable->getCharWidth();
|
||||
mHandlesTable->addColumnAt(8 + 16 * wCharWidth, tr("Type"), true);
|
||||
mHandlesTable->addColumnAt(8 + 8 * wCharWidth, tr("Type number"), true);
|
||||
|
|
@ -48,6 +49,7 @@ HandlesView::HandlesView(QWidget* parent) : QWidget(parent)
|
|||
mTcpConnectionsTable->setInternalTitle("TcpConnections");
|
||||
mTcpConnectionsTable->setSearchStartCol(0);
|
||||
mTcpConnectionsTable->setDrawDebugOnly(true);
|
||||
mTcpConnectionsTable->setDisassemblyPopupEnabled(false);
|
||||
wCharWidth = mTcpConnectionsTable->getCharWidth();
|
||||
mTcpConnectionsTable->addColumnAt(8 + 64 * wCharWidth, tr("Remote address"), true);
|
||||
mTcpConnectionsTable->addColumnAt(8 + 64 * wCharWidth, tr("Local address"), true);
|
||||
|
|
@ -67,6 +69,7 @@ HandlesView::HandlesView(QWidget* parent) : QWidget(parent)
|
|||
mPrivilegesTable = new StdTable(this);
|
||||
mPrivilegesTable->setWindowTitle("Privileges");
|
||||
mPrivilegesTable->setDrawDebugOnly(true);
|
||||
mPrivilegesTable->setDisassemblyPopupEnabled(false);
|
||||
mPrivilegesTable->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
mPrivilegesTable->addColumnAt(8 + 32 * wCharWidth, tr("Privilege"), true);
|
||||
mPrivilegesTable->addColumnAt(8 + 16 * wCharWidth, tr("State"), true);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ MemoryMapView::MemoryMapView(StdTable* parent)
|
|||
{
|
||||
setDrawDebugOnly(true);
|
||||
enableMultiSelection(true);
|
||||
setDisassemblyPopupEnabled(false);
|
||||
|
||||
int charwidth = getCharWidth();
|
||||
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ ScriptView::ScriptView(StdTable* parent) : StdTable(parent)
|
|||
enableMultiSelection(false);
|
||||
enableColumnSorting(false);
|
||||
setDrawDebugOnly(false);
|
||||
setDisassemblyPopupEnabled(false);
|
||||
|
||||
int charwidth = getCharWidth();
|
||||
|
||||
|
|
|
|||
|
|
@ -100,6 +100,7 @@ SymbolView::SymbolView(QWidget* parent) : QWidget(parent), ui(new Ui::SymbolView
|
|||
mModuleList->setSearchStartCol(0);
|
||||
mModuleList->enableMultiSelection(true);
|
||||
mModuleList->setAddressColumn(0, true);
|
||||
mModuleList->setDisassemblyPopupEnabled(false);
|
||||
int charwidth = mModuleList->getCharWidth();
|
||||
mModuleList->addColumnAt(charwidth * 2 * sizeof(dsint) + 8, tr("Base"), true);
|
||||
mModuleList->addColumnAt(300, tr("Module"), true);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef SNOWMANVIEW_H
|
||||
#define SNOWMANVIEW_H
|
||||
|
||||
#include <QWidget>
|
||||
class QWidget;
|
||||
|
||||
struct SnowmanRange
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue