mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-09-13 22:36:35 -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);
|
mCancelButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onCancelButtonClicked);
|
||||||
mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onOkButtonClicked);
|
mOkButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onOkButtonClicked);
|
||||||
mDeleteButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onDeleteButtonClicked);
|
mDeleteButton->eventMouseButtonClick += MyGUI::newDelegate(this, &EditNoteDialog::onDeleteButtonClicked);
|
||||||
|
|
||||||
|
if (Settings::gui().mControllerMenus)
|
||||||
|
{
|
||||||
|
mControllerButtons.a = "#{sOk}";
|
||||||
|
mControllerButtons.b = "#{sCancel}";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void EditNoteDialog::showDeleteButton(bool show)
|
void EditNoteDialog::showDeleteButton(bool show)
|
||||||
@ -1490,6 +1496,13 @@ namespace MWGui
|
|||||||
WindowModal::onOpen();
|
WindowModal::onOpen();
|
||||||
center();
|
center();
|
||||||
MWBase::Environment::get().getWindowManager()->setKeyFocusWidget(mTextEdit);
|
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)
|
void EditNoteDialog::onCancelButtonClicked(MyGUI::Widget* sender)
|
||||||
@ -1507,6 +1520,78 @@ namespace MWGui
|
|||||||
eventDeleteClicked();
|
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
|
bool LocalMapBase::MarkerUserData::isPositionExplored() const
|
||||||
{
|
{
|
||||||
if (!mLocalMapRender)
|
if (!mLocalMapRender)
|
||||||
|
@ -212,6 +212,8 @@ namespace MWGui
|
|||||||
EventHandle_Void eventDeleteClicked;
|
EventHandle_Void eventDeleteClicked;
|
||||||
EventHandle_Void eventOkClicked;
|
EventHandle_Void eventOkClicked;
|
||||||
|
|
||||||
|
ControllerButtonStr* getControllerButtons() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void onCancelButtonClicked(MyGUI::Widget* sender);
|
void onCancelButtonClicked(MyGUI::Widget* sender);
|
||||||
void onOkButtonClicked(MyGUI::Widget* sender);
|
void onOkButtonClicked(MyGUI::Widget* sender);
|
||||||
@ -221,6 +223,9 @@ namespace MWGui
|
|||||||
MyGUI::Button* mOkButton;
|
MyGUI::Button* mOkButton;
|
||||||
MyGUI::Button* mCancelButton;
|
MyGUI::Button* mCancelButton;
|
||||||
MyGUI::Button* mDeleteButton;
|
MyGUI::Button* mDeleteButton;
|
||||||
|
|
||||||
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
|
int mControllerFocus;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase, public NoDrop
|
class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase, public NoDrop
|
||||||
|
Loading…
x
Reference in New Issue
Block a user