1
0
Fork 0
mirror of https://github.com/OpenMW/openmw.git synced 2025-10-17 08:16:34 +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:
Alexei Kotov 2025-08-14 16:37:57 +03:00
commit 488f73c5da
17 changed files with 22 additions and 29 deletions

View file

@ -383,7 +383,6 @@ namespace MWGui
InfoBoxDialog::InfoBoxDialog()
: WindowModal("openmw_infobox.layout")
, mControllerFocus(0)
{
getWidget(mTextBox, "TextBox");
getWidget(mText, "Text");
@ -525,7 +524,6 @@ namespace MWGui
: WindowModal("openmw_chargen_create_class.layout")
, mAffectedAttribute(nullptr)
, mAffectedSkill(nullptr)
, mControllerFocus(2)
{
// Centre dialog
center();
@ -962,7 +960,6 @@ namespace MWGui
if (Settings::gui().mControllerMenus)
{
mControllerFocus = 0;
if (mAttributeButtons.size() > 0)
mAttributeButtons[0]->setStateSelected(true);
@ -1063,7 +1060,6 @@ namespace MWGui
if (Settings::gui().mControllerMenus)
{
mControllerFocus = 0;
if (mSkillButtons.size() > 0)
mSkillButtons[0]->setStateSelected(true);

View file

@ -51,7 +51,7 @@ namespace MWGui
MyGUI::TextBox* mText;
MyGUI::Widget* mButtonBar;
std::vector<MyGUI::Button*> mButtons;
size_t mControllerFocus;
size_t mControllerFocus = 0;
};
// Lets the player choose between 3 ways of creating a class
@ -218,7 +218,7 @@ namespace MWGui
void onAttributeClicked(Widgets::MWAttributePtr _sender);
void onCancelClicked(MyGUI::Widget* _sender);
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
size_t mControllerFocus;
size_t mControllerFocus = 0;
std::vector<Widgets::MWAttribute*> mAttributeButtons;
private:
@ -252,12 +252,12 @@ namespace MWGui
void onSkillClicked(Widgets::MWSkillPtr _sender);
void onCancelClicked(MyGUI::Widget* _sender);
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
size_t mControllerFocus;
size_t mControllerFocus = 0;
std::vector<Widgets::MWSkill*> mSkillButtons;
private:
ESM::RefId mSkillId;
std::array<size_t, 3> mNumSkillsPerSpecialization;
std::array<size_t, 3> mNumSkillsPerSpecialization{};
void selectNextColumn(int direction);
};
@ -353,7 +353,7 @@ namespace MWGui
Widgets::MWSkillPtr mAffectedSkill;
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
size_t mControllerFocus;
size_t mControllerFocus = 2;
};
}
#endif

View file

@ -75,7 +75,7 @@ namespace MWGui
MyGUI::ScrollView* mScrollView;
DisplayMode mDisplayMode;
int mControllerFocus;
int mControllerFocus = 0;
void updateControllerFocus(int prevFocus, int newFocus);
};
}

View file

@ -54,7 +54,7 @@ namespace MWGui
MyGUI::ScrollView* mScrollView;
int mItemCount = 0;
int mRows;
int mRows = 1;
int mControllerFocus = 0;
bool mControllerActiveWindow;
void updateControllerFocus(int prevFocus, int newFocus);

View file

@ -25,16 +25,15 @@ namespace MWGui
std::shared_ptr<JournalViewModel> model, bool questList, ToUTF8::FromType encoding);
/// destroy this instance of the JournalWindow implementation
virtual ~JournalWindow() {}
virtual ~JournalWindow() = default;
/// show/hide the journal window
void setVisible(bool newValue) override = 0;
std::string_view getWindowIdForLua() const override { return "Journal"; }
size_t mIndexRowCount;
std::vector<MyGUI::Button*> mButtons;
size_t mIndexRowCount = 1;
size_t mSelectedQuest = 0;
size_t mSelectedIndex = 0;
void moveSelectedIndex(int offset);

View file

@ -53,7 +53,7 @@ namespace MWGui
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
std::vector<MyGUI::Button*> mAttributeButtons;
size_t mControllerFocus;
size_t mControllerFocus = 0;
};
}

View file

@ -225,7 +225,7 @@ namespace MWGui
MyGUI::Button* mDeleteButton;
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
int mControllerFocus;
int mControllerFocus = 0;
};
class MapWindow : public MWGui::WindowPinnableBase, public LocalMapBase, public NoDrop

View file

@ -27,7 +27,7 @@ namespace MWGui
MWWorld::Ptr mActor;
size_t mControllerFocus;
size_t mControllerFocus = 0;
protected:
void onMouseWheel(MyGUI::Widget* _sender, int _rel);

View file

@ -116,7 +116,7 @@ namespace MWGui
int mButtonPressed;
size_t mDefaultFocus;
bool mImmediate;
size_t mControllerFocus;
size_t mControllerFocus = 0;
};
}

View file

@ -40,7 +40,6 @@ namespace MWGui
, mKey(std::vector<keyData>(10))
, mSelected(nullptr)
, mActivated(nullptr)
, mControllerFocus(0)
{
getWidget(mOkButton, "OKButton");
getWidget(mInstructionLabel, "InstructionLabel");
@ -506,7 +505,6 @@ namespace MWGui
QuickKeysMenuAssign::QuickKeysMenuAssign(QuickKeysMenu* parent)
: WindowModal("openmw_quickkeys_menu_assign.layout")
, mParent(parent)
, mControllerFocus(0)
{
getWidget(mLabel, "Label");
getWidget(mItemButton, "ItemButton");

View file

@ -75,7 +75,7 @@ namespace MWGui
void assignItem(MWWorld::Ptr item);
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
size_t mControllerFocus;
size_t mControllerFocus = 0;
};
class QuickKeysMenuAssign : public WindowModal
@ -93,7 +93,7 @@ namespace MWGui
QuickKeysMenu* mParent;
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
int mControllerFocus;
int mControllerFocus = 0;
};
class MagicSelectionDialog : public WindowModal
@ -114,7 +114,7 @@ namespace MWGui
void onModelIndexSelected(SpellModel::ModelIndex index);
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
int mControllerFocus;
int mControllerFocus = 0;
};
}

View file

@ -104,7 +104,7 @@ namespace MWGui
// 0 = Name, 1 = Race, 2 = Class, 3 = BirthSign, 4 = Back, 5 = OK
std::vector<MyGUI::Button*> mButtons;
int mControllerFocus;
int mControllerFocus = 0;
};
}
#endif

View file

@ -58,7 +58,7 @@ namespace MWGui
private:
static bool sortSpells(const ESM::Spell* left, const ESM::Spell* right);
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
size_t mControllerFocus;
size_t mControllerFocus = 0;
};
}

View file

@ -94,7 +94,7 @@ namespace MWGui
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
void updateControllerFocus(int prevFocus, int newFocus);
int mControllerFocus;
int mControllerFocus = 0;
std::vector<MyGUI::TextBox*> mButtons;
};

View file

@ -55,7 +55,7 @@ namespace MWGui
TimeAdvancer mTimeAdvancer;
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
size_t mControllerFocus;
size_t mControllerFocus = 0;
};
}

View file

@ -42,7 +42,7 @@ namespace MWGui
private:
bool onControllerButtonEvent(const SDL_ControllerButtonEvent& arg) override;
size_t mControllerFocus;
size_t mControllerFocus = 0;
};
}

View file

@ -511,7 +511,7 @@ namespace MWGui
std::vector<GuiMode> mGuiModes;
// The active window for controller mode for each GUI mode.
std::map<GuiMode, int> mActiveControllerWindows;
bool mControllerTooltip;
bool mControllerTooltip = false;
void reapplyActiveControllerWindow();