wind buttons in TimeMachineDialog repeat

This commit is contained in:
thrust26 2019-06-02 00:15:27 +02:00
parent 311a8575a2
commit fccfee04f8
3 changed files with 33 additions and 14 deletions

View File

@ -256,11 +256,11 @@ TimeMachineDialog::TimeMachineDialog(OSystem& osystem, DialogContainer& parent,
xpos += buttonWidth + BUTTON_GAP; xpos += buttonWidth + BUTTON_GAP;
myRewind1Widget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, REWIND_1, myRewind1Widget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, REWIND_1,
BUTTON_W, BUTTON_H, kRewind1); BUTTON_W, BUTTON_H, kRewind1, true);
xpos += buttonWidth + BUTTON_GAP; xpos += buttonWidth + BUTTON_GAP;
myUnwind1Widget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, UNWIND_1, myUnwind1Widget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, UNWIND_1,
BUTTON_W, BUTTON_H, kUnwind1); BUTTON_W, BUTTON_H, kUnwind1, true);
xpos += buttonWidth + BUTTON_GAP; xpos += buttonWidth + BUTTON_GAP;
myUnwindAllWidget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, UNWIND_ALL, myUnwindAllWidget = new ButtonWidget(this, font, xpos, ypos, buttonWidth, buttonHeight, UNWIND_ALL,

View File

@ -368,10 +368,11 @@ void StaticTextWidget::drawWidget(bool hilite)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int w, int h, int x, int y, int w, int h,
const string& label, int cmd) const string& label, int cmd, bool repeat)
: StaticTextWidget(boss, font, x, y, w, h, label, TextAlign::Center), : StaticTextWidget(boss, font, x, y, w, h, label, TextAlign::Center),
CommandSender(boss), CommandSender(boss),
_cmd(cmd), _cmd(cmd),
_repeat(repeat),
_useBitmap(false), _useBitmap(false),
_bitmap(nullptr), _bitmap(nullptr),
_bmw(0), _bmw(0),
@ -391,16 +392,16 @@ ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font,
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int dw, int x, int y, int dw,
const string& label, int cmd) const string& label, int cmd, bool repeat)
: ButtonWidget(boss, font, x, y, font.getStringWidth(label) + dw, font.getLineHeight() + 4, label, cmd) : ButtonWidget(boss, font, x, y, font.getStringWidth(label) + dw, font.getLineHeight() + 4, label, cmd, repeat)
{ {
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int x, int y,
const string& label, int cmd) const string& label, int cmd, bool repeat)
: ButtonWidget(boss, font, x, y, 20, label, cmd) : ButtonWidget(boss, font, x, y, 20, label, cmd, repeat)
{ {
} }
@ -408,8 +409,8 @@ ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font,
ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget::ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int w, int h, int x, int y, int w, int h,
uInt32* bitmap, int bmw, int bmh, uInt32* bitmap, int bmw, int bmh,
int cmd) int cmd, bool repeat)
: ButtonWidget(boss, font, x, y, w, h, "", cmd) : ButtonWidget(boss, font, x, y, w, h, "", cmd, repeat)
{ {
_bitmap = bitmap; _bitmap = bitmap;
_bmh = bmh; _bmh = bmh;
@ -446,10 +447,25 @@ bool ButtonWidget::handleEvent(Event::Type e)
} }
} }
bool ButtonWidget::handleMouseClicks(int x, int y, MouseButton b)
{
return _repeat;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ButtonWidget::handleMouseDown(int x, int y, MouseButton b, int clickCount)
{
if(_repeat && isEnabled() && x >= 0 && x < _w && y >= 0 && y < _h)
{
clearFlags(Widget::FLAG_HILITED);
sendCommand(_cmd, 0, _id);
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void ButtonWidget::handleMouseUp(int x, int y, MouseButton b, int clickCount) void ButtonWidget::handleMouseUp(int x, int y, MouseButton b, int clickCount)
{ {
if(isEnabled() && x >= 0 && x < _w && y >= 0 && y < _h) if (!_repeat && isEnabled() && x >= 0 && x < _w && y >= 0 && y < _h)
{ {
clearFlags(Widget::FLAG_HILITED); clearFlags(Widget::FLAG_HILITED);
sendCommand(_cmd, 0, _id); sendCommand(_cmd, 0, _id);

View File

@ -219,17 +219,17 @@ class ButtonWidget : public StaticTextWidget, public CommandSender
public: public:
ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int w, int h, int x, int y, int w, int h,
const string& label, int cmd = 0); const string& label, int cmd = 0, bool repeat = false);
ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int dw, int x, int y, int dw,
const string& label, int cmd = 0); const string& label, int cmd = 0, bool repeat = false);
ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int x, int y,
const string& label, int cmd = 0); const string& label, int cmd = 0, bool repeat = false);
ButtonWidget(GuiObject* boss, const GUI::Font& font, ButtonWidget(GuiObject* boss, const GUI::Font& font,
int x, int y, int dw, int dh, int x, int y, int dw, int dh,
uInt32* bitmap, int bmw, int bmh, uInt32* bitmap, int bmw, int bmh,
int cmd = 0); int cmd = 0, bool repeat = false);
void setCmd(int cmd) { _cmd = cmd; } void setCmd(int cmd) { _cmd = cmd; }
int getCmd() const { return _cmd; } int getCmd() const { return _cmd; }
@ -237,6 +237,8 @@ class ButtonWidget : public StaticTextWidget, public CommandSender
void setBitmap(uInt32* bitmap, int bmw, int bmh); void setBitmap(uInt32* bitmap, int bmw, int bmh);
protected: protected:
bool handleMouseClicks(int x, int y, MouseButton b) override;
void handleMouseDown(int x, int y, MouseButton b, int clickCount) override;
void handleMouseUp(int x, int y, MouseButton b, int clickCount) override; void handleMouseUp(int x, int y, MouseButton b, int clickCount) override;
void handleMouseEntered() override; void handleMouseEntered() override;
void handleMouseLeft() override; void handleMouseLeft() override;
@ -246,6 +248,7 @@ class ButtonWidget : public StaticTextWidget, public CommandSender
protected: protected:
int _cmd; int _cmd;
bool _repeat; // button repeats
bool _useBitmap; bool _useBitmap;
uInt32* _bitmap; uInt32* _bitmap;
int _bmw, _bmh; int _bmw, _bmh;