all repos — mgba @ 90a4e7d438b068aa42651ae37343e6e814567f71

mGBA Game Boy Advance Emulator

Qt: Fix tile and sprite views not always displaying at first
Vicki Pfau vi@endrift.com
Sat, 09 Feb 2019 02:09:10 -0800
commit

90a4e7d438b068aa42651ae37343e6e814567f71

parent

0d55ab2bb6093ae0a4a72e65c657deb3dbf61d60

M CHANGESCHANGES

@@ -1,6 +1,7 @@

0.7.1: (Future) Bugfixes: - Switch: Fix final cleanup (fixes mgba.io/i/1283) + - Qt: Fix tile and sprite views not always displaying at first Misc: - GBA Video: Improve sprite cycle counting (fixes mgba.io/i/1274)
M src/platform/qt/ObjView.cppsrc/platform/qt/ObjView.cpp

@@ -46,6 +46,9 @@ m_ui.transform->setFont(font);

m_ui.mode->setFont(font); connect(m_ui.tiles, &TilePainter::indexPressed, this, &ObjView::translateIndex); + connect(m_ui.tiles, &TilePainter::needsRedraw, this, [this]() { + updateTiles(true); + }); connect(m_ui.objId, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &ObjView::selectObj); connect(m_ui.magnification, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [this]() { updateTiles(true);
M src/platform/qt/TilePainter.cppsrc/platform/qt/TilePainter.cpp

@@ -31,6 +31,7 @@ calculatedHeight -= calculatedHeight % m_size;

if (width() / m_size != m_backing.width() / m_size || m_backing.height() != calculatedHeight) { m_backing = QPixmap(width(), calculatedHeight); m_backing.fill(Qt::transparent); + emit needsRedraw(); } }
M src/platform/qt/TilePainter.hsrc/platform/qt/TilePainter.h

@@ -26,6 +26,7 @@ void setTileMagnification(int mag);

signals: void indexPressed(int index); + void needsRedraw(); protected: void paintEvent(QPaintEvent*) override;
M src/platform/qt/TileView.cppsrc/platform/qt/TileView.cpp

@@ -25,6 +25,9 @@ m_ui.setupUi(this);

m_ui.tile->setController(controller); connect(m_ui.tiles, &TilePainter::indexPressed, m_ui.tile, &AssetTile::selectIndex); + connect(m_ui.tiles, &TilePainter::needsRedraw, this, [this]() { + updateTiles(true); + }); connect(m_ui.paletteId, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &TileView::updatePalette); switch (m_controller->platform()) {