mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-09-13 14:25:24 -04:00
Add controller support to map's node dialog
This commit is contained in:
parent
cf26020ed6
commit
d6c23f7664
@ -1463,6 +1463,12 @@ namespace MWGui
|
||||
mCancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onCancelButtonClicked);
|
||||
mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onOkButtonClicked);
|
||||
mDeleteButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onDeleteButtonClicked);
|
||||
|
||||
if (Settings::gui().mControllerMenus)
|
||||
{
|
||||
mControllerButtons.a = "#{sOk}";
|
||||
mControllerButtons.b = "#{sCancel}";
|
||||
}
|
||||
}
|
||||
|
||||
void EditNoteDialog::showDeleteButton(bool show)
|
||||
@ -1490,6 +1496,13 @@ namespace MWGui
|
||||
WindowModal::onOpen();
|
||||
center();
|
||||
MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit);
|
||||
|
||||
if (Settings::gui().mControllerMenus)
|
||||
{
|
||||
mControllerFocus = getDeleteButtonShown() ? 1 : 0;
|
||||
mOkButton->setStateSelected(true);
|
||||
mCancelButton->setStateSelected(false);
|
||||
}
|
||||
}
|
||||
|
||||
void EditNoteDialog::onCancelButtonClicked(MyGUI::Widget* sender)
|
||||
@ -1507,6 +1520,78 @@ namespace MWGui
|
||||
eventDeleteClicked();
|
||||
}
|
||||
|
||||
ControllerButtonStr* EditNoteDialog::getControllerButtons()
|
||||
{
|
||||
mControllerButtons.x = getDeleteButtonShown() ? "#{sDelete}" : "";
|
||||
return &mControllerButtons;
|
||||
}
|
||||
|
||||
bool EditNoteDialog::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
|
||||
{
|
||||
if (arg.button == SDL_CONTROLLER_BUTTON_A)
|
||||
{
|
||||
if (getDeleteButtonShown())
|
||||
{
|
||||
if (mControllerFocus == 0)
|
||||
onDeleteButtonClicked(mDeleteButton);
|
||||
else if (mControllerFocus == 1)
|
||||
onOkButtonClicked(mOkButton);
|
||||
else
|
||||
onCancelButtonClicked(mCancelButton);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mControllerFocus == 0)
|
||||
onOkButtonClicked(mOkButton);
|
||||
else
|
||||
onCancelButtonClicked(mCancelButton);
|
||||
}
|
||||
}
|
||||
else if (arg.button == SDL_CONTROLLER_BUTTON_B)
|
||||
{
|
||||
onCancelButtonClicked(mCancelButton);
|
||||
}
|
||||
else if (arg.button == SDL_CONTROLLER_BUTTON_X)
|
||||
{
|
||||
if (getDeleteButtonShown())
|
||||
onDeleteButtonClicked(mDeleteButton);
|
||||
}
|
||||
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_LEFT)
|
||||
{
|
||||
if (getDeleteButtonShown())
|
||||
{
|
||||
mControllerFocus = wrap(mControllerFocus - 1, 3);
|
||||
mDeleteButton->setStateSelected(mControllerFocus == 0);
|
||||
mOkButton->setStateSelected(mControllerFocus == 1);
|
||||
mCancelButton->setStateSelected(mControllerFocus == 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
mControllerFocus = 0;
|
||||
mOkButton->setStateSelected(mControllerFocus == 0);
|
||||
mCancelButton->setStateSelected(mControllerFocus == 1);
|
||||
}
|
||||
}
|
||||
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT)
|
||||
{
|
||||
if (getDeleteButtonShown())
|
||||
{
|
||||
mControllerFocus = wrap(mControllerFocus + 1, 3);
|
||||
mDeleteButton->setStateSelected(mControllerFocus == 0);
|
||||
mOkButton->setStateSelected(mControllerFocus == 1);
|
||||
mCancelButton->setStateSelected(mControllerFocus == 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
mControllerFocus = 1;
|
||||
mOkButton->setStateSelected(mControllerFocus == 0);
|
||||
mCancelButton->setStateSelected(mControllerFocus == 1);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool LocalMapBase::MarkerUserData::isPositionExplored() const
|
||||
{
|
||||
if (!mLocalMapRender)
|
||||
|
@ -212,6 +212,8 @@ namespace MWGui
|
||||
EventHandle_Void eventDeleteClicked;
|
||||
EventHandle_Void eventOkClicked;
|
||||
|
||||
ControllerButtonStr* getControllerButtons() override;
|
||||
|
||||
private:
|
||||
void onCancelButtonClicked(MyGUI::Widget* sender);
|
||||
void onOkButtonClicked(MyGUI::Widget* sender);
|
||||
@ -221,6 +223,9 @@ namespace MWGui
|
||||
MyGUI::Button* mOkButton;
|
||||
MyGUI::Button* mCancelButton;
|
||||
MyGUI::Button* mDeleteButton;
|
||||
|
||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||
int mControllerFocus;
|
||||
};
|
||||
|
||||
class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase, public NoDrop
|
||||
|
Loading…
x
Reference in New Issue
Block a user