mirror of
https://github.com/libretro/scummvm.git
synced 2025-02-03 01:15:58 +00:00
MM: MM1: Add a _priorView field to FocusMessage
This commit is contained in:
parent
b52ddaced0
commit
721c9a846a
@ -107,17 +107,19 @@ void Events::processEvent(Common::Event &ev) {
|
||||
|
||||
void Events::replaceView(UIElement *ui, bool replaceAllViews) {
|
||||
assert(ui);
|
||||
UIElement *priorView = focusedView();
|
||||
|
||||
if (replaceAllViews) {
|
||||
clearViews();
|
||||
|
||||
} else if (!_views.empty()) {
|
||||
focusedView()->msgUnfocus(UnfocusMessage());
|
||||
priorView->msgUnfocus(UnfocusMessage());
|
||||
_views.pop();
|
||||
}
|
||||
|
||||
_views.push(ui);
|
||||
ui->redraw();
|
||||
ui->msgFocus(FocusMessage());
|
||||
ui->msgFocus(FocusMessage(priorView));
|
||||
}
|
||||
|
||||
void Events::replaceView(const Common::String &name, bool replaceAllViews) {
|
||||
@ -126,12 +128,14 @@ void Events::replaceView(const Common::String &name, bool replaceAllViews) {
|
||||
|
||||
void Events::addView(UIElement *ui) {
|
||||
assert(ui);
|
||||
UIElement *priorView = focusedView();
|
||||
|
||||
if (!_views.empty())
|
||||
focusedView()->msgUnfocus(UnfocusMessage());
|
||||
priorView->msgUnfocus(UnfocusMessage());
|
||||
|
||||
_views.push(ui);
|
||||
ui->redraw();
|
||||
ui->msgFocus(FocusMessage());
|
||||
ui->msgFocus(FocusMessage(priorView));
|
||||
}
|
||||
|
||||
void Events::addView(const Common::String &name) {
|
||||
@ -139,7 +143,8 @@ void Events::addView(const Common::String &name) {
|
||||
}
|
||||
|
||||
void Events::popView() {
|
||||
focusedView()->msgUnfocus(UnfocusMessage());
|
||||
UIElement *priorView = focusedView();
|
||||
priorView->msgUnfocus(UnfocusMessage());
|
||||
_views.pop();
|
||||
|
||||
for (int i = 0; i < (int)_views.size() - 1; ++i) {
|
||||
@ -148,7 +153,7 @@ void Events::popView() {
|
||||
}
|
||||
|
||||
if (!_views.empty()) {
|
||||
focusedView()->msgFocus(FocusMessage());
|
||||
focusedView()->msgFocus(FocusMessage(priorView));
|
||||
focusedView()->redraw();
|
||||
}
|
||||
}
|
||||
|
@ -30,12 +30,21 @@
|
||||
namespace MM {
|
||||
namespace MM1 {
|
||||
|
||||
class UIElement;
|
||||
|
||||
enum TextAlign {
|
||||
ALIGN_LEFT, ALIGN_RIGHT, ALIGN_MIDDLE
|
||||
};
|
||||
|
||||
struct Message {};
|
||||
struct FocusMessage : public Message {};
|
||||
|
||||
struct FocusMessage : public Message {
|
||||
UIElement *_priorView = nullptr;
|
||||
FocusMessage() : Message() {}
|
||||
FocusMessage(UIElement *priorView) : Message(),
|
||||
_priorView(priorView) {}
|
||||
};
|
||||
|
||||
struct UnfocusMessage : public Message {};
|
||||
struct ActionMessage : public Message {
|
||||
KeybindingAction _action;
|
||||
|
@ -203,6 +203,12 @@ CreateCharacters::CreateCharacters() : ScrollView("CreateCharacters") {
|
||||
setButtonEnabled(4, false);
|
||||
}
|
||||
|
||||
bool CreateCharacters::msgFocus(const FocusMessage &msg) {
|
||||
if (dynamic_cast<TextEntry *>(msg._priorView) == nullptr)
|
||||
_newChar.reroll();
|
||||
return true;
|
||||
}
|
||||
|
||||
void CreateCharacters::draw() {
|
||||
ScrollView::draw();
|
||||
printAttributes();
|
||||
|
@ -129,10 +129,7 @@ public:
|
||||
CreateCharacters();
|
||||
virtual ~CreateCharacters() {}
|
||||
|
||||
bool msgFocus(const FocusMessage &msg) override {
|
||||
_newChar.reroll();
|
||||
return true;
|
||||
}
|
||||
bool msgFocus(const FocusMessage &msg) override;
|
||||
void draw() override;
|
||||
bool msgKeypress(const KeypressMessage &msg) override;
|
||||
bool msgAction(const ActionMessage &msg) override;
|
||||
|
Loading…
x
Reference in New Issue
Block a user