diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/Tooltip.cpp | 2 | ||||
-rw-r--r-- | gui/Tooltip.h | 33 | ||||
-rw-r--r-- | gui/dialog.cpp | 2 |
3 files changed, 30 insertions, 7 deletions
diff --git a/gui/Tooltip.cpp b/gui/Tooltip.cpp index e5f06bcafe..ba313ee34f 100644 --- a/gui/Tooltip.cpp +++ b/gui/Tooltip.cpp @@ -40,6 +40,8 @@ Tooltip::Tooltip() : void Tooltip::setup(Dialog *parent, Widget *widget, int x, int y) { assert(widget->hasTooltip()); + _parent = parent; + _maxWidth = g_gui.xmlEval()->getVar("Globals.Tooltip.MaxWidth", 100); _xdelta = g_gui.xmlEval()->getVar("Globals.Tooltip.XDelta", 0); _ydelta = g_gui.xmlEval()->getVar("Globals.Tooltip.YDelta", 0); diff --git a/gui/Tooltip.h b/gui/Tooltip.h index f83fc40966..58b6d8a429 100644 --- a/gui/Tooltip.h +++ b/gui/Tooltip.h @@ -32,6 +32,9 @@ namespace GUI { class Widget; class Tooltip : public Dialog { +private: + Dialog *_parent; + public: Tooltip(); @@ -39,12 +42,30 @@ public: void drawDialog(); protected: - virtual void handleMouseDown(int x, int y, int button, int clickCount) { close(); } - virtual void handleMouseUp(int x, int y, int button, int clickCount) { close(); } - virtual void handleMouseWheel(int x, int y, int direction) { close(); } - virtual void handleKeyDown(Common::KeyState state) { close(); } - virtual void handleKeyUp(Common::KeyState state) { close(); } - virtual void handleMouseMoved(int x, int y, int button) { close(); } + virtual void handleMouseDown(int x, int y, int button, int clickCount) { + close(); + _parent->handleMouseDown(x + (getAbsX() - _parent->getAbsX()), y + (getAbsY() - _parent->getAbsY()), button, clickCount); + } + virtual void handleMouseUp(int x, int y, int button, int clickCount) { + close(); + _parent->handleMouseUp(x + (getAbsX() - _parent->getAbsX()), y + (getAbsY() - _parent->getAbsY()), button, clickCount); + } + virtual void handleMouseWheel(int x, int y, int direction) { + close(); + _parent->handleMouseWheel(x + (getAbsX() - _parent->getAbsX()), y + (getAbsX() - _parent->getAbsX()), direction); + } + virtual void handleKeyDown(Common::KeyState state) { + close(); + _parent->handleKeyDown(state); + } + virtual void handleKeyUp(Common::KeyState state) { + close(); + _parent->handleKeyUp(state); + } + virtual void handleMouseMoved(int x, int y, int button) { + close(); + _parent->handleMouseMoved(x + (getAbsX() - _parent->getAbsX()), y + (getAbsY() - _parent->getAbsY()), button); + } int _maxWidth; int _xdelta, _ydelta; diff --git a/gui/dialog.cpp b/gui/dialog.cpp index fa4e508494..315c24e9bf 100644 --- a/gui/dialog.cpp +++ b/gui/dialog.cpp @@ -219,7 +219,7 @@ void Dialog::handleMouseWheel(int x, int y, int direction) { if (!w) w = _focusedWidget; if (w) - w->handleMouseWheel(x, y, direction); + w->handleMouseWheel(x - (w->getAbsX() - _x), y - (w->getAbsY() - _y), direction); } void Dialog::handleKeyDown(Common::KeyState state) { |