diff --git a/rpcs3/rpcs3qt/memory_viewer_panel.cpp b/rpcs3/rpcs3qt/memory_viewer_panel.cpp index 76db2fefaf..6243f9bb78 100644 --- a/rpcs3/rpcs3qt/memory_viewer_panel.cpp +++ b/rpcs3/rpcs3qt/memory_viewer_panel.cpp @@ -1,6 +1,7 @@ #include "stdafx.h" #include "Utilities/mutex.h" #include "Emu/Memory/vm_locking.h" +#include "Emu/Memory/vm.h" #include "memory_viewer_panel.h" @@ -233,7 +234,9 @@ memory_viewer_panel::memory_viewer_panel(QWidget* parent) //Fill the QTextEdits ShowMemory(); - setFixedSize(sizeHint()); + + setFixedWidth(sizeHint().width()); + setMinimumHeight(hbox_tools->sizeHint().height()); } memory_viewer_panel::~memory_viewer_panel() @@ -255,6 +258,29 @@ void memory_viewer_panel::wheelEvent(QWheelEvent *event) ShowMemory(); } +void memory_viewer_panel::resizeEvent(QResizeEvent *event) +{ + QDialog::resizeEvent(event); + + if (event->oldSize().height() != -1) + m_height_leftover += event->size().height() - event->oldSize().height(); + + const auto font_height = m_fontMetrics->height(); + + if (m_height_leftover >= font_height) + { + m_height_leftover -= font_height; + ++m_rowcount; + ShowMemory(); + } + else if (m_height_leftover < -font_height) + { + m_height_leftover += font_height; + --m_rowcount; + ShowMemory(); + } +} + void memory_viewer_panel::ShowMemory() { QString t_mem_addr_str; diff --git a/rpcs3/rpcs3qt/memory_viewer_panel.h b/rpcs3/rpcs3qt/memory_viewer_panel.h index 74a3d54768..3229c33d45 100644 --- a/rpcs3/rpcs3qt/memory_viewer_panel.h +++ b/rpcs3/rpcs3qt/memory_viewer_panel.h @@ -11,6 +11,7 @@ class memory_viewer_panel : public QDialog u32 m_addr; u32 m_colcount; u32 m_rowcount; + s32 m_height_leftover{}; QLineEdit* m_addr_line; @@ -25,7 +26,8 @@ public: memory_viewer_panel(QWidget* parent); ~memory_viewer_panel(); - virtual void wheelEvent(QWheelEvent *event); + void wheelEvent(QWheelEvent *event) override; + void resizeEvent(QResizeEvent *event) override; virtual void ShowMemory(); void SetPC(const uint pc);