memory viewer: improve layout and resize

This commit is contained in:
Megamouse 2020-12-18 04:19:29 +01:00
parent a7f10d142e
commit 908465b274
2 changed files with 20 additions and 20 deletions

View file

@ -174,7 +174,7 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent, u32 addr)
m_mem_ascii->ensurePolished(); m_mem_ascii->ensurePolished();
// Merge Memory Panel: // Merge Memory Panel:
hbox_mem_panel->setAlignment(Qt::AlignLeft); hbox_mem_panel->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
hbox_mem_panel->addSpacing(20); hbox_mem_panel->addSpacing(20);
hbox_mem_panel->addWidget(m_mem_addr); hbox_mem_panel->addWidget(m_mem_addr);
hbox_mem_panel->addSpacing(10); hbox_mem_panel->addSpacing(10);
@ -198,9 +198,9 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent, u32 addr)
// Merge and display everything // Merge and display everything
vbox_panel->addSpacing(10); vbox_panel->addSpacing(10);
vbox_panel->addLayout(hbox_tools); vbox_panel->addLayout(hbox_tools, 0);
vbox_panel->addSpacing(10); vbox_panel->addSpacing(10);
vbox_panel->addLayout(hbox_mem_panel); vbox_panel->addLayout(hbox_mem_panel, 1);
vbox_panel->addSpacing(10); vbox_panel->addSpacing(10);
setLayout(vbox_panel); setLayout(vbox_panel);
@ -236,7 +236,6 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent, u32 addr)
ShowMemory(); ShowMemory();
setFixedWidth(sizeHint().width()); setFixedWidth(sizeHint().width());
setMinimumHeight(hbox_tools->sizeHint().height());
} }
memory_viewer_panel::~memory_viewer_panel() memory_viewer_panel::~memory_viewer_panel()
@ -269,22 +268,24 @@ void memory_viewer_panel::resizeEvent(QResizeEvent *event)
{ {
QDialog::resizeEvent(event); QDialog::resizeEvent(event);
if (event->oldSize().height() != -1) const int font_height = m_fontMetrics->height();
m_height_leftover += event->size().height() - event->oldSize().height(); const QMargins margins = layout()->contentsMargins();
const auto font_height = m_fontMetrics->height(); int free_height = event->size().height()
- (layout()->count() * (margins.top() + margins.bottom()))
- font_height; // bottom margin to allow shrinking
if (m_height_leftover >= font_height) for (int i = 0; i < layout()->count(); i++)
{ {
m_height_leftover -= font_height; if (i != 3) // Index of our memory layout
++m_rowcount; free_height -= layout()->itemAt(i)->sizeHint().height();
ShowMemory();
} }
else if (m_height_leftover < -font_height)
const u32 new_row_count = std::max(0, free_height) / font_height;
if (m_rowcount != new_row_count)
{ {
m_height_leftover += font_height; m_rowcount = new_row_count;
if (m_rowcount > 0)
--m_rowcount;
ShowMemory(); ShowMemory();
} }
} }
@ -421,15 +422,15 @@ void memory_viewer_panel::ShowMemory()
m_mem_hex->setText(t_mem_hex_str); m_mem_hex->setText(t_mem_hex_str);
m_mem_ascii->setText(t_mem_ascii_str); m_mem_ascii->setText(t_mem_ascii_str);
// Adjust Text Boxes // Adjust Text Boxes (also helps with window resize)
QSize textSize = m_fontMetrics->size(0, m_mem_addr->text()); QSize textSize = m_fontMetrics->size(0, m_mem_addr->text());
m_mem_addr->setFixedSize(textSize.width() + 10, textSize.height() + 10); m_mem_addr->setFixedSize(textSize.width() + 10, textSize.height());
textSize = m_fontMetrics->size(0, m_mem_hex->text()); textSize = m_fontMetrics->size(0, m_mem_hex->text());
m_mem_hex->setFixedSize(textSize.width() + 10, textSize.height() + 10); m_mem_hex->setFixedSize(textSize.width() + 10, textSize.height());
textSize = m_fontMetrics->size(0, m_mem_ascii->text()); textSize = m_fontMetrics->size(0, m_mem_ascii->text());
m_mem_ascii->setFixedSize(textSize.width() + 10, textSize.height() + 10); m_mem_ascii->setFixedSize(textSize.width() + 10, textSize.height());
} }
void memory_viewer_panel::SetPC(const uint pc) void memory_viewer_panel::SetPC(const uint pc)

View file

@ -35,7 +35,6 @@ private:
u32 m_addr; u32 m_addr;
u32 m_colcount; u32 m_colcount;
u32 m_rowcount; u32 m_rowcount;
s32 m_height_leftover{};
QLineEdit* m_addr_line; QLineEdit* m_addr_line;