[Scummvm-git-logs] scummvm master -> 19b7b2aa20aa31f3c81245d5fc87f47744399c34
sev-
noreply at scummvm.org
Sat Apr 29 11:44:44 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
19b7b2aa20 GUI: Don't enforce full redraw upon closing tool tip
Commit: 19b7b2aa20aa31f3c81245d5fc87f47744399c34
https://github.com/scummvm/scummvm/commit/19b7b2aa20aa31f3c81245d5fc87f47744399c34
Author: Miro Kropacek (miro.kropacek at gmail.com)
Date: 2023-04-29T13:44:40+02:00
Commit Message:
GUI: Don't enforce full redraw upon closing tool tip
Changed paths:
gui/Tooltip.cpp
gui/Tooltip.h
gui/gui-manager.cpp
gui/gui-manager.h
diff --git a/gui/Tooltip.cpp b/gui/Tooltip.cpp
index 23e5b5f7437..d96f04ed4c8 100644
--- a/gui/Tooltip.cpp
+++ b/gui/Tooltip.cpp
@@ -97,4 +97,19 @@ void Tooltip::drawDialog(DrawLayer layerToDraw) {
}
}
+void Tooltip::close() {
+ // copy&paste from Dialog::close()
+ _visible = false;
+
+ if (_mouseWidget) {
+ _mouseWidget->handleMouseLeft(0);
+ _mouseWidget = nullptr;
+ }
+ releaseFocus();
+ g_gui.closeTopDialog(false);
+
+ // instead of kRedrawCloseDialog schedule kRedrawTopDialog of the parent
+ g_gui.scheduleTopDialogRedraw();
+}
+
}
diff --git a/gui/Tooltip.h b/gui/Tooltip.h
index 2f188764ff3..3d79ef5e504 100644
--- a/gui/Tooltip.h
+++ b/gui/Tooltip.h
@@ -43,6 +43,8 @@ public:
void receivedFocus(int x = -1, int y = -1) override {}
protected:
+ void close() override;
+
void handleMouseDown(int x, int y, int button, int clickCount) override {
close();
_parent->handleMouseDown(x + (getAbsX() - _parent->getAbsX()), y + (getAbsY() - _parent->getAbsY()), button, clickCount);
diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp
index f9477b2c4ca..2c1b571ce1a 100644
--- a/gui/gui-manager.cpp
+++ b/gui/gui-manager.cpp
@@ -614,7 +614,7 @@ void GuiManager::openDialog(Dialog *dialog) {
dialog->reflowLayout();
}
-void GuiManager::closeTopDialog() {
+void GuiManager::closeTopDialog(bool redraw) {
// Don't do anything if no dialog is open
if (_dialogStack.empty())
return;
@@ -627,10 +627,12 @@ void GuiManager::closeTopDialog() {
giveFocusToDialog(dialog);
}
- if (_redrawStatus != kRedrawFull)
- _redrawStatus = kRedrawCloseDialog;
+ if (redraw) {
+ if (_redrawStatus != kRedrawFull)
+ _redrawStatus = kRedrawCloseDialog;
- redraw();
+ this->redraw();
+ }
}
void GuiManager::setupCursor() {
diff --git a/gui/gui-manager.h b/gui/gui-manager.h
index 8dfb46210ba..7881c6d17a0 100644
--- a/gui/gui-manager.h
+++ b/gui/gui-manager.h
@@ -71,6 +71,7 @@ typedef Common::FixedStack<Dialog *> DialogStack;
*/
class GuiManager : public Common::Singleton<GuiManager>, public CommandSender {
friend class Dialog;
+ friend class Tooltip;
friend class Common::Singleton<SingletonBaseType>;
GuiManager();
~GuiManager() override;
@@ -211,7 +212,7 @@ protected:
void restoreState();
void openDialog(Dialog *dialog);
- void closeTopDialog();
+ void closeTopDialog(bool redraw = true);
void redraw();
More information about the Scummvm-git-logs
mailing list