diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index a151084d1..2622b8fe9 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -889,6 +889,8 @@ void FrameBuffer::setUIPalette() myFullPalette[j] = mapRGB(r, g, b); } FBSurface::setPalette(myFullPalette); + if(&myOSystem.eventHandler()) + update(true); } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/gui/Dialog.cxx b/src/gui/Dialog.cxx index b483d6e96..e1bf15f3e 100644 --- a/src/gui/Dialog.cxx +++ b/src/gui/Dialog.cxx @@ -217,10 +217,13 @@ void Dialog::positionAt(uInt32 pos) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Dialog::redraw() +void Dialog::redraw(bool force) { - if(!isVisible() || !needsRedraw()) - return;// false; + if(!isVisible()) + return; + + if(force) + setDirty(); // Draw this dialog setPosition(); diff --git a/src/gui/Dialog.hxx b/src/gui/Dialog.hxx index 4fc48b7fc..abb22911a 100644 --- a/src/gui/Dialog.hxx +++ b/src/gui/Dialog.hxx @@ -64,7 +64,7 @@ class Dialog : public GuiObject void tick() override; bool isChainDirty() const override; - void redraw(); + void redraw(bool force = false); void render(); void addFocusWidget(Widget* w) override; diff --git a/src/gui/DialogContainer.cxx b/src/gui/DialogContainer.cxx index 50db35d3f..7b001cb06 100644 --- a/src/gui/DialogContainer.cxx +++ b/src/gui/DialogContainer.cxx @@ -102,8 +102,8 @@ void DialogContainer::draw(bool full) // Draw and render all dirty dialogs myDialogStack.applyAll([&](Dialog*& d) { - if(d->needsRedraw()) - d->redraw(); + if(full || d->needsRedraw()) + d->redraw(full); }); // Always render all surfaces, bottom to top render();