mirror of
https://github.com/OpenMW/openmw.git
synced 2025-12-08 23:04:30 +00:00
Merge branch 'bmdhacks-skill-controller-crash' into 'master'
fix a crash in skill selection dialog due to uninitialized controller data See merge request OpenMW/openmw!4843
This commit is contained in:
commit
488f73c5da
17 changed files with 22 additions and 29 deletions
|
|
@ -383,7 +383,6 @@ namespace MWGui
|
||||||
|
|
||||||
InfoBoxDialog::InfoBoxDialog()
|
InfoBoxDialog::InfoBoxDialog()
|
||||||
: WindowModal("openmw_infobox.layout")
|
: WindowModal("openmw_infobox.layout")
|
||||||
, mControllerFocus(0)
|
|
||||||
{
|
{
|
||||||
getWidget(mTextBox, "TextBox");
|
getWidget(mTextBox, "TextBox");
|
||||||
getWidget(mText, "Text");
|
getWidget(mText, "Text");
|
||||||
|
|
@ -525,7 +524,6 @@ namespace MWGui
|
||||||
: WindowModal("openmw_chargen_create_class.layout")
|
: WindowModal("openmw_chargen_create_class.layout")
|
||||||
, mAffectedAttribute(nullptr)
|
, mAffectedAttribute(nullptr)
|
||||||
, mAffectedSkill(nullptr)
|
, mAffectedSkill(nullptr)
|
||||||
, mControllerFocus(2)
|
|
||||||
{
|
{
|
||||||
// Centre dialog
|
// Centre dialog
|
||||||
center();
|
center();
|
||||||
|
|
@ -962,7 +960,6 @@ namespace MWGui
|
||||||
|
|
||||||
if (Settings::gui().mControllerMenus)
|
if (Settings::gui().mControllerMenus)
|
||||||
{
|
{
|
||||||
mControllerFocus = 0;
|
|
||||||
if (mAttributeButtons.size() > 0)
|
if (mAttributeButtons.size() > 0)
|
||||||
mAttributeButtons[0]->setStateSelected(true);
|
mAttributeButtons[0]->setStateSelected(true);
|
||||||
|
|
||||||
|
|
@ -1063,7 +1060,6 @@ namespace MWGui
|
||||||
|
|
||||||
if (Settings::gui().mControllerMenus)
|
if (Settings::gui().mControllerMenus)
|
||||||
{
|
{
|
||||||
mControllerFocus = 0;
|
|
||||||
if (mSkillButtons.size() > 0)
|
if (mSkillButtons.size() > 0)
|
||||||
mSkillButtons[0]->setStateSelected(true);
|
mSkillButtons[0]->setStateSelected(true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ namespace MWGui
|
||||||
MyGUI::TextBox* mText;
|
MyGUI::TextBox* mText;
|
||||||
MyGUI::Widget* mButtonBar;
|
MyGUI::Widget* mButtonBar;
|
||||||
std::vector<MyGUI::Button*> mButtons;
|
std::vector<MyGUI::Button*> mButtons;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Lets the player choose between 3 ways of creating a class
|
// Lets the player choose between 3 ways of creating a class
|
||||||
|
|
@ -218,7 +218,7 @@ namespace MWGui
|
||||||
void onAttributeClicked(Widgets::MWAttributePtr _sender);
|
void onAttributeClicked(Widgets::MWAttributePtr _sender);
|
||||||
void onCancelClicked(MyGUI::Widget* _sender);
|
void onCancelClicked(MyGUI::Widget* _sender);
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
std::vector<Widgets::MWAttribute*> mAttributeButtons;
|
std::vector<Widgets::MWAttribute*> mAttributeButtons;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -252,12 +252,12 @@ namespace MWGui
|
||||||
void onSkillClicked(Widgets::MWSkillPtr _sender);
|
void onSkillClicked(Widgets::MWSkillPtr _sender);
|
||||||
void onCancelClicked(MyGUI::Widget* _sender);
|
void onCancelClicked(MyGUI::Widget* _sender);
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
std::vector<Widgets::MWSkill*> mSkillButtons;
|
std::vector<Widgets::MWSkill*> mSkillButtons;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
ESM::RefId mSkillId;
|
ESM::RefId mSkillId;
|
||||||
std::array<size_t, 3> mNumSkillsPerSpecialization;
|
std::array<size_t, 3> mNumSkillsPerSpecialization{};
|
||||||
|
|
||||||
void selectNextColumn(int direction);
|
void selectNextColumn(int direction);
|
||||||
};
|
};
|
||||||
|
|
@ -353,7 +353,7 @@ namespace MWGui
|
||||||
Widgets::MWSkillPtr mAffectedSkill;
|
Widgets::MWSkillPtr mAffectedSkill;
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 2;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ namespace MWGui
|
||||||
MyGUI::ScrollView* mScrollView;
|
MyGUI::ScrollView* mScrollView;
|
||||||
DisplayMode mDisplayMode;
|
DisplayMode mDisplayMode;
|
||||||
|
|
||||||
int mControllerFocus;
|
int mControllerFocus = 0;
|
||||||
void updateControllerFocus(int prevFocus, int newFocus);
|
void updateControllerFocus(int prevFocus, int newFocus);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ namespace MWGui
|
||||||
MyGUI::ScrollView* mScrollView;
|
MyGUI::ScrollView* mScrollView;
|
||||||
|
|
||||||
int mItemCount = 0;
|
int mItemCount = 0;
|
||||||
int mRows;
|
int mRows = 1;
|
||||||
int mControllerFocus = 0;
|
int mControllerFocus = 0;
|
||||||
bool mControllerActiveWindow;
|
bool mControllerActiveWindow;
|
||||||
void updateControllerFocus(int prevFocus, int newFocus);
|
void updateControllerFocus(int prevFocus, int newFocus);
|
||||||
|
|
|
||||||
|
|
@ -25,16 +25,15 @@ namespace MWGui
|
||||||
std::shared_ptr<JournalViewModel> model, bool questList, ToUTF8::FromType encoding);
|
std::shared_ptr<JournalViewModel> model, bool questList, ToUTF8::FromType encoding);
|
||||||
|
|
||||||
/// destroy this instance of the JournalWindow implementation
|
/// destroy this instance of the JournalWindow implementation
|
||||||
virtual ~JournalWindow() {}
|
virtual ~JournalWindow() = default;
|
||||||
|
|
||||||
/// show/hide the journal window
|
/// show/hide the journal window
|
||||||
void setVisible(bool newValue) override = 0;
|
void setVisible(bool newValue) override = 0;
|
||||||
|
|
||||||
std::string_view getWindowIdForLua() const override { return "Journal"; }
|
std::string_view getWindowIdForLua() const override { return "Journal"; }
|
||||||
|
|
||||||
size_t mIndexRowCount;
|
|
||||||
|
|
||||||
std::vector<MyGUI::Button*> mButtons;
|
std::vector<MyGUI::Button*> mButtons;
|
||||||
|
size_t mIndexRowCount = 1;
|
||||||
size_t mSelectedQuest = 0;
|
size_t mSelectedQuest = 0;
|
||||||
size_t mSelectedIndex = 0;
|
size_t mSelectedIndex = 0;
|
||||||
void moveSelectedIndex(int offset);
|
void moveSelectedIndex(int offset);
|
||||||
|
|
|
||||||
|
|
@ -53,7 +53,7 @@ namespace MWGui
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
std::vector<MyGUI::Button*> mAttributeButtons;
|
std::vector<MyGUI::Button*> mAttributeButtons;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -225,7 +225,7 @@ namespace MWGui
|
||||||
MyGUI::Button* mDeleteButton;
|
MyGUI::Button* mDeleteButton;
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
int mControllerFocus;
|
int mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase, public NoDrop
|
class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase, public NoDrop
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ namespace MWGui
|
||||||
|
|
||||||
MWWorld::Ptr mActor;
|
MWWorld::Ptr mActor;
|
||||||
|
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void onMouseWheel(MyGUI::Widget* _sender, int _rel);
|
void onMouseWheel(MyGUI::Widget* _sender, int _rel);
|
||||||
|
|
|
||||||
|
|
@ -116,7 +116,7 @@ namespace MWGui
|
||||||
int mButtonPressed;
|
int mButtonPressed;
|
||||||
size_t mDefaultFocus;
|
size_t mDefaultFocus;
|
||||||
bool mImmediate;
|
bool mImmediate;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,6 @@ namespace MWGui
|
||||||
, mKey(std::vector<keyData>(10))
|
, mKey(std::vector<keyData>(10))
|
||||||
, mSelected(nullptr)
|
, mSelected(nullptr)
|
||||||
, mActivated(nullptr)
|
, mActivated(nullptr)
|
||||||
, mControllerFocus(0)
|
|
||||||
{
|
{
|
||||||
getWidget(mOkButton, "OKButton");
|
getWidget(mOkButton, "OKButton");
|
||||||
getWidget(mInstructionLabel, "InstructionLabel");
|
getWidget(mInstructionLabel, "InstructionLabel");
|
||||||
|
|
@ -506,7 +505,6 @@ namespace MWGui
|
||||||
QuickKeysMenuAssign::QuickKeysMenuAssign(QuickKeysMenu* parent)
|
QuickKeysMenuAssign::QuickKeysMenuAssign(QuickKeysMenu* parent)
|
||||||
: WindowModal("openmw_quickkeys_menu_assign.layout")
|
: WindowModal("openmw_quickkeys_menu_assign.layout")
|
||||||
, mParent(parent)
|
, mParent(parent)
|
||||||
, mControllerFocus(0)
|
|
||||||
{
|
{
|
||||||
getWidget(mLabel, "Label");
|
getWidget(mLabel, "Label");
|
||||||
getWidget(mItemButton, "ItemButton");
|
getWidget(mItemButton, "ItemButton");
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ namespace MWGui
|
||||||
void assignItem(MWWorld::Ptr item);
|
void assignItem(MWWorld::Ptr item);
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class QuickKeysMenuAssign : public WindowModal
|
class QuickKeysMenuAssign : public WindowModal
|
||||||
|
|
@ -93,7 +93,7 @@ namespace MWGui
|
||||||
QuickKeysMenu* mParent;
|
QuickKeysMenu* mParent;
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
int mControllerFocus;
|
int mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class MagicSelectionDialog : public WindowModal
|
class MagicSelectionDialog : public WindowModal
|
||||||
|
|
@ -114,7 +114,7 @@ namespace MWGui
|
||||||
void onModelIndexSelected(SpellModel::ModelIndex index);
|
void onModelIndexSelected(SpellModel::ModelIndex index);
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
int mControllerFocus;
|
int mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ namespace MWGui
|
||||||
|
|
||||||
// 0 = Name, 1 = Race, 2 = Class, 3 = BirthSign, 4 = Back, 5 = OK
|
// 0 = Name, 1 = Race, 2 = Class, 3 = BirthSign, 4 = Back, 5 = OK
|
||||||
std::vector<MyGUI::Button*> mButtons;
|
std::vector<MyGUI::Button*> mButtons;
|
||||||
int mControllerFocus;
|
int mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ namespace MWGui
|
||||||
private:
|
private:
|
||||||
static bool sortSpells(const ESM::Spell* left, const ESM::Spell* right);
|
static bool sortSpells(const ESM::Spell* left, const ESM::Spell* right);
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,7 @@ namespace MWGui
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
void updateControllerFocus(int prevFocus, int newFocus);
|
void updateControllerFocus(int prevFocus, int newFocus);
|
||||||
int mControllerFocus;
|
int mControllerFocus = 0;
|
||||||
std::vector<MyGUI::TextBox*> mButtons;
|
std::vector<MyGUI::TextBox*> mButtons;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ namespace MWGui
|
||||||
TimeAdvancer mTimeAdvancer;
|
TimeAdvancer mTimeAdvancer;
|
||||||
|
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ namespace MWGui
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
|
||||||
size_t mControllerFocus;
|
size_t mControllerFocus = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -511,7 +511,7 @@ namespace MWGui
|
||||||
std::vector<GuiMode> mGuiModes;
|
std::vector<GuiMode> mGuiModes;
|
||||||
// The active window for controller mode for each GUI mode.
|
// The active window for controller mode for each GUI mode.
|
||||||
std::map<GuiMode, int> mActiveControllerWindows;
|
std::map<GuiMode, int> mActiveControllerWindows;
|
||||||
bool mControllerTooltip;
|
bool mControllerTooltip = false;
|
||||||
|
|
||||||
void reapplyActiveControllerWindow();
|
void reapplyActiveControllerWindow();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue