diff --git a/src/bridge/bridgemain.h b/src/bridge/bridgemain.h
index 6c876615..4d687c7e 100644
--- a/src/bridge/bridgemain.h
+++ b/src/bridge/bridgemain.h
@@ -671,9 +671,8 @@ typedef struct
typedef struct
{
- char mod[MAX_MODULE_SIZE];
+ duint refcount;
XREF_RECORD* references;
- size_t refcount;
} XREF_INFO;
//Debugger functions
diff --git a/src/gui/Src/BasicView/Disassembly.cpp b/src/gui/Src/BasicView/Disassembly.cpp
index b54ce032..fd3b411c 100644
--- a/src/gui/Src/BasicView/Disassembly.cpp
+++ b/src/gui/Src/BasicView/Disassembly.cpp
@@ -883,7 +883,7 @@ int Disassembly::paintJumpsGraphic(QPainter* painter, int x, int y, dsint addr,
duint max = selVa, min = selVa;
showXref = true;
int jmpcount = 0;
- for(int i = 0; i < mXrefInfo.refcount; i++)
+ for(duint i = 0; i < mXrefInfo.refcount; i++)
{
if(mXrefInfo.references[i].type != XREF_JMP)
continue;
diff --git a/src/gui/Src/Gui/CPUWidget.cpp b/src/gui/Src/Gui/CPUWidget.cpp
index 187d2db3..a49b96de 100644
--- a/src/gui/Src/Gui/CPUWidget.cpp
+++ b/src/gui/Src/Gui/CPUWidget.cpp
@@ -39,8 +39,8 @@ CPUWidget::CPUWidget(QWidget* parent) : QWidget(parent), ui(new Ui::CPUWidget)
mGeneralRegs = new RegistersView(0);
mGeneralRegs->setFixedWidth(1000);
- mGeneralRegs->setFixedHeight(mGeneralRegs->getEstimateHeight());
mGeneralRegs->ShowFPU(true);
+ mGeneralRegs->setFixedHeight(mGeneralRegs->getEstimateHeight());
QScrollArea* upperScrollArea = new QScrollArea(this);
upperScrollArea->setWidget(mGeneralRegs);
diff --git a/src/gui/Src/Gui/EditFloatRegister.cpp b/src/gui/Src/Gui/EditFloatRegister.cpp
index 5d41d979..ded46aa9 100644
--- a/src/gui/Src/Gui/EditFloatRegister.cpp
+++ b/src/gui/Src/Gui/EditFloatRegister.cpp
@@ -43,6 +43,8 @@ EditFloatRegister::EditFloatRegister(int RegisterSize, QWidget* parent) :
GuiAddLogMessage(QString("Error, register size %1 is not supported.\n").arg(RegisterSize).toUtf8().constData());
break;
}
+ setFixedWidth(width());
+ adjustSize();
connect(ui->hexEdit, SIGNAL(textEdited(QString)), this, SLOT(editingHex1FinishedSlot(QString)));
ui->hexEdit->setValidator(&hexValidate);
@@ -108,6 +110,7 @@ EditFloatRegister::EditFloatRegister(int RegisterSize, QWidget* parent) :
void EditFloatRegister::hideUpperPart()
{
+ ui->line->hide();
ui->labelH0->hide();
ui->labelH1->hide();
ui->labelH2->hide();
@@ -167,6 +170,11 @@ const char* EditFloatRegister::getData()
return Data;
}
+void EditFloatRegister::selectAllText()
+{
+ ui->hexEdit->selectAll();
+}
+
/**
* @brief reloads the lower 128-bit of data of the dialog
*/
@@ -483,7 +491,7 @@ EditFloatRegister::~EditFloatRegister()
void EditFloatRegister::editingHex1FinishedSlot(QString arg)
{
mutex = sender();
- QString filled(arg);
+ QString filled(arg.toUpper());
filled.append(QString(16 - filled.length(), QChar('0')));
for(int i = 0; i < 16; i++)
Data[i + 16] = filled.mid(i * 2, 2).toInt(0, 16);
@@ -497,7 +505,7 @@ void EditFloatRegister::editingHex1FinishedSlot(QString arg)
void EditFloatRegister::editingHex2FinishedSlot(QString arg)
{
mutex = sender();
- QString filled(arg);
+ QString filled(arg.toUpper());
filled.append(QString(16 - filled.length(), QChar('0')));
for(int i = 0; i < 16; i++)
Data[i] = filled.mid(i * 2, 2).toInt(0, 16);
diff --git a/src/gui/Src/Gui/EditFloatRegister.h b/src/gui/Src/Gui/EditFloatRegister.h
index eab9ac8c..d6dbdd29 100644
--- a/src/gui/Src/Gui/EditFloatRegister.h
+++ b/src/gui/Src/Gui/EditFloatRegister.h
@@ -20,6 +20,7 @@ public:
explicit EditFloatRegister(int RegisterSize, QWidget* parent = 0);
void loadData(char* RegisterData);
const char* getData();
+ void selectAllText();
~EditFloatRegister();
diff --git a/src/gui/Src/Gui/EditFloatRegister.ui b/src/gui/Src/Gui/EditFloatRegister.ui
index 5bb08eb0..f18b3651 100644
--- a/src/gui/Src/Gui/EditFloatRegister.ui
+++ b/src/gui/Src/Gui/EditFloatRegister.ui
@@ -9,10 +9,16 @@
0
0
- 701
- 528
+ 696
+ 456
+
+
+ 0
+ 0
+
+
Dialog
@@ -20,635 +26,722 @@
:/icons/images/modify.png:/icons/images/modify.png
-
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
+
+ 6
+
-
-
-
- QLayout::SetNoConstraint
-
-
-
-
-
- QLayout::SetDefaultConstraint
+
+
-
+
+
+
+ 0
+ 0
+
+
+ Double:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Short:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Float:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Byte:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Int64:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Long:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ High:
+
+
+
+ -
+
-
-
-
-
-
-
- High:
-
-
-
- -
-
-
- byte
-
-
-
- -
-
-
- Short:
-
-
-
- -
-
-
- Long:
-
-
-
- -
-
-
- Float:
-
-
-
- -
-
-
- Double:
-
-
-
- -
-
-
- int64:
-
-
-
-
+
-
-
-
-
-
-
-
-
-
- Qt::ImhUppercaseOnly
-
-
- 32
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- 0-1
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 2-3
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 4-5
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 6-7
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 8-9
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- A-B
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- C-D
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- E-F
-
-
- Qt::AlignCenter
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
+
+ -
+
+
-
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ 0-1
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 2-3
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 4-5
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 6-7
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 8-9
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ A-B
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ C-D
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ E-F
+
+
+ Qt::AlignCenter
+
+
+
+
+
+ -
+
+
-
+
+
+ Qt::ImhUppercaseOnly
+
+
+ 32
+
+
+
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ -
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Float:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Low:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Byte:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Long:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Double:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Short:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Int64:
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
-
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+ -
+
+
+ QLayout::SetMinimumSize
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ 0-1
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 2-3
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 4-5
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 6-7
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 8-9
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ A-B
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ C-D
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ E-F
+
+
+ Qt::AlignCenter
+
+
+
+
+
+ -
+
+
-
+
+
+ Qt::ImhUppercaseOnly
+
+
+ 32
+
+
+
+
+
+
+
+ -
+
-
-
-
- Qt::Horizontal
+
+
+ &Hexadecimal
-
-
-
- QLayout::SetDefaultConstraint
+
+
+ &Signed
-
-
-
-
-
-
-
- Low:
-
-
-
- -
-
-
- byte
-
-
-
- -
-
-
- Short:
-
-
-
- -
-
-
- Long:
-
-
-
- -
-
-
- Float:
-
-
-
- -
-
-
- Double:
-
-
-
- -
-
-
- int64:
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
- Qt::ImhUppercaseOnly
-
-
- 32
-
-
-
-
-
- -
-
-
-
-
-
-
- 0
- 0
-
-
-
- 0-1
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 2-3
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 4-5
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 6-7
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 8-9
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- A-B
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- C-D
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- E-F
-
-
- Qt::AlignCenter
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-
+
+ true
+
+
-
-
-
-
-
-
- Hexadecimal
-
-
-
- -
-
-
- Signed
-
-
- true
-
-
-
- -
-
-
- Unsigned
-
-
-
-
+
+
+ &Unsigned
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 40
+ 20
+
+
+
+
+
+
+ -
+
-
@@ -663,12 +756,32 @@
-
-
+
Qt::Horizontal
-
- QDialogButtonBox::Cancel|QDialogButtonBox::Ok
+
+
+ 40
+ 20
+
+
+
+
+ -
+
+
+ &OK
+
+
+ true
+
+
+
+ -
+
+
+ &Cancel
@@ -676,39 +789,88 @@
+
+ hexEdit
+ shortEdit0
+ shortEdit1
+ shortEdit2
+ shortEdit3
+ shortEdit4
+ shortEdit5
+ shortEdit6
+ shortEdit7
+ longEdit0
+ longEdit1
+ longEdit2
+ longEdit3
+ floatEdit0
+ floatEdit1
+ floatEdit2
+ floatEdit3
+ doubleEdit0
+ doubleEdit1
+ longLongEdit0
+ longLongEdit1
+ hexEdit_2
+ shortEdit0_2
+ shortEdit1_2
+ shortEdit2_2
+ shortEdit3_2
+ shortEdit4_2
+ shortEdit5_2
+ shortEdit6_2
+ shortEdit7_2
+ longEdit0_2
+ longEdit1_2
+ longEdit2_2
+ longEdit3_2
+ floatEdit0_2
+ floatEdit1_2
+ floatEdit2_2
+ floatEdit3_2
+ doubleEdit0_2
+ doubleEdit1_2
+ longLongEdit0_2
+ longLongEdit1_2
+ radioHex
+ radioSigned
+ radioUnsigned
+ buttonOk
+ buttonCancel
+
- buttonBox
- accepted()
+ buttonOk
+ clicked()
EditFloatRegister
accept()
- 248
- 254
+ 389
+ 408
- 157
- 274
+ 448
+ 388
- buttonBox
- rejected()
+ buttonCancel
+ clicked()
EditFloatRegister
reject()
- 316
- 260
+ 440
+ 428
- 286
- 274
+ 471
+ 417
diff --git a/src/gui/Src/Gui/LineEditDialog.cpp b/src/gui/Src/Gui/LineEditDialog.cpp
index 9f6e72e1..8f30747e 100644
--- a/src/gui/Src/Gui/LineEditDialog.cpp
+++ b/src/gui/Src/Gui/LineEditDialog.cpp
@@ -18,6 +18,11 @@ LineEditDialog::~LineEditDialog()
delete ui;
}
+void LineEditDialog::selectAllText()
+{
+ ui->textEdit->selectAll();
+}
+
void LineEditDialog::setCursorPosition(int position)
{
ui->textEdit->setCursorPosition(position);
diff --git a/src/gui/Src/Gui/LineEditDialog.h b/src/gui/Src/Gui/LineEditDialog.h
index edb4af44..53ecbc8d 100644
--- a/src/gui/Src/Gui/LineEditDialog.h
+++ b/src/gui/Src/Gui/LineEditDialog.h
@@ -23,6 +23,7 @@ public:
void setCheckBoxText(const QString & text);
void setCursorPosition(int position);
void ForceSize(unsigned int size);
+ void selectAllText();
private slots:
void on_textEdit_textChanged(const QString & arg1);
diff --git a/src/gui/Src/Gui/RegistersView.cpp b/src/gui/Src/Gui/RegistersView.cpp
index e4dae5b0..e44f8262 100644
--- a/src/gui/Src/Gui/RegistersView.cpp
+++ b/src/gui/Src/Gui/RegistersView.cpp
@@ -1882,6 +1882,8 @@ void RegistersView::displayEditDialog()
EditFloatRegister mEditFloat(256, this);
mEditFloat.setWindowTitle(tr("Edit YMM register"));
mEditFloat.loadData(registerValue(&wRegDumpStruct, mSelected));
+ mEditFloat.show();
+ mEditFloat.selectAllText();
if(mEditFloat.exec() == QDialog::Accepted)
setRegister(mSelected, (duint)mEditFloat.getData());
}
@@ -1906,6 +1908,8 @@ void RegistersView::displayEditDialog()
do
{
errorinput = false;
+ mLineEdit.show();
+ mLineEdit.selectAllText();
if(mLineEdit.exec() != QDialog::Accepted)
return; //pressed cancel
else
diff --git a/src/gui/Src/Gui/XrefBrowseDialog.cpp b/src/gui/Src/Gui/XrefBrowseDialog.cpp
index 7beeb5da..20a37bb1 100644
--- a/src/gui/Src/Gui/XrefBrowseDialog.cpp
+++ b/src/gui/Src/Gui/XrefBrowseDialog.cpp
@@ -14,7 +14,7 @@ XrefBrowseDialog::XrefBrowseDialog(QWidget* parent, duint address) :
{
char disasm[GUI_MAX_DISASSEMBLY_SIZE] = "";
setWindowTitle(QString(tr("xrefs at %1")).arg(ToHexString(address)));
- for(int i = 0; i < mXrefInfo.refcount; i++)
+ for(duint i = 0; i < mXrefInfo.refcount; i++)
{
GuiGetDisassembly(mXrefInfo.references[i].addr, disasm);
ui->listWidget->addItem(disasm);
diff --git a/src/gui/Src/Utils/HexValidator.cpp b/src/gui/Src/Utils/HexValidator.cpp
index a57e41e3..d2dee84d 100644
--- a/src/gui/Src/Utils/HexValidator.cpp
+++ b/src/gui/Src/Utils/HexValidator.cpp
@@ -9,27 +9,26 @@ HexValidator::~HexValidator()
{
}
+static bool isXDigit(const QChar & c)
+{
+ return c.isDigit() || (c.toUpper() >= 'A' && c.toUpper() <= 'F');
+}
+
void HexValidator::fixup(QString & input) const
{
for(auto i : input)
{
- if(!i.isDigit())
- {
- if(i >= QChar('a') && i <= QChar('f'))
- i = i.toUpper();
- else
- input.remove(i);
- }
+ if(!isXDigit(i))
+ input.remove(i);
}
}
QValidator::State HexValidator::validate(QString & input, int & pos) const
{
Q_UNUSED(pos);
- input = input.toUpper();
for(int i = 0; i < input.length(); i++)
{
- if(!(input.at(i).isDigit() || (input.at(i) >= QChar('A') && input.at(i) <= QChar('F'))))
+ if(!isXDigit(input[i]))
return State::Invalid;
}
return State::Acceptable;