mirror of
https://github.com/OpenMW/openmw.git
synced 2025-10-15 18:16:33 +00:00
Add option to show controller tooltips by default
This commit is contained in:
parent
088b2d1bbc
commit
8379c31f13
19 changed files with 142 additions and 42 deletions
|
@ -304,7 +304,9 @@ bool Launcher::SettingsPage::loadSettings()
|
||||||
loadSettingBool(Settings::gui().mColorTopicEnable, *changeDialogTopicsCheckBox);
|
loadSettingBool(Settings::gui().mColorTopicEnable, *changeDialogTopicsCheckBox);
|
||||||
showOwnedComboBox->setCurrentIndex(Settings::game().mShowOwned);
|
showOwnedComboBox->setCurrentIndex(Settings::game().mShowOwned);
|
||||||
loadSettingBool(Settings::gui().mStretchMenuBackground, *stretchBackgroundCheckBox);
|
loadSettingBool(Settings::gui().mStretchMenuBackground, *stretchBackgroundCheckBox);
|
||||||
|
connect(controllerMenusCheckBox, &QCheckBox::toggled, this, &SettingsPage::slotControllerMenusToggled);
|
||||||
loadSettingBool(Settings::gui().mControllerMenus, *controllerMenusCheckBox);
|
loadSettingBool(Settings::gui().mControllerMenus, *controllerMenusCheckBox);
|
||||||
|
loadSettingBool(Settings::gui().mControllerTooltips, *controllerMenuTooltipsCheckBox);
|
||||||
loadSettingBool(Settings::map().mAllowZooming, *useZoomOnMapCheckBox);
|
loadSettingBool(Settings::map().mAllowZooming, *useZoomOnMapCheckBox);
|
||||||
loadSettingBool(Settings::game().mGraphicHerbalism, *graphicHerbalismCheckBox);
|
loadSettingBool(Settings::game().mGraphicHerbalism, *graphicHerbalismCheckBox);
|
||||||
scalingSpinBox->setValue(Settings::gui().mScalingFactor);
|
scalingSpinBox->setValue(Settings::gui().mScalingFactor);
|
||||||
|
@ -499,6 +501,7 @@ void Launcher::SettingsPage::saveSettings()
|
||||||
saveSettingInt(*showOwnedComboBox, Settings::game().mShowOwned);
|
saveSettingInt(*showOwnedComboBox, Settings::game().mShowOwned);
|
||||||
saveSettingBool(*stretchBackgroundCheckBox, Settings::gui().mStretchMenuBackground);
|
saveSettingBool(*stretchBackgroundCheckBox, Settings::gui().mStretchMenuBackground);
|
||||||
saveSettingBool(*controllerMenusCheckBox, Settings::gui().mControllerMenus);
|
saveSettingBool(*controllerMenusCheckBox, Settings::gui().mControllerMenus);
|
||||||
|
saveSettingBool(*controllerMenuTooltipsCheckBox, Settings::gui().mControllerTooltips);
|
||||||
saveSettingBool(*useZoomOnMapCheckBox, Settings::map().mAllowZooming);
|
saveSettingBool(*useZoomOnMapCheckBox, Settings::map().mAllowZooming);
|
||||||
saveSettingBool(*graphicHerbalismCheckBox, Settings::game().mGraphicHerbalism);
|
saveSettingBool(*graphicHerbalismCheckBox, Settings::game().mGraphicHerbalism);
|
||||||
Settings::gui().mScalingFactor.set(scalingSpinBox->value());
|
Settings::gui().mScalingFactor.set(scalingSpinBox->value());
|
||||||
|
@ -557,6 +560,11 @@ void Launcher::SettingsPage::slotAnimSourcesToggled(bool checked)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Launcher::SettingsPage::slotControllerMenusToggled(bool checked)
|
||||||
|
{
|
||||||
|
controllerMenuTooltipsCheckBox->setEnabled(checked);
|
||||||
|
}
|
||||||
|
|
||||||
void Launcher::SettingsPage::slotPostProcessToggled(bool checked)
|
void Launcher::SettingsPage::slotPostProcessToggled(bool checked)
|
||||||
{
|
{
|
||||||
postprocessTransparentPostpassCheckBox->setEnabled(checked);
|
postprocessTransparentPostpassCheckBox->setEnabled(checked);
|
||||||
|
|
|
@ -34,6 +34,7 @@ namespace Launcher
|
||||||
void slotSkyBlendingToggled(bool checked);
|
void slotSkyBlendingToggled(bool checked);
|
||||||
void slotShadowDistLimitToggled(bool checked);
|
void slotShadowDistLimitToggled(bool checked);
|
||||||
void slotDistantLandToggled(bool checked);
|
void slotDistantLandToggled(bool checked);
|
||||||
|
void slotControllerMenusToggled(bool checked);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Config::GameSettings& mGameSettings;
|
Config::GameSettings& mGameSettings;
|
||||||
|
|
|
@ -1408,6 +1408,19 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="8" column="1">
|
||||||
|
<widget class="QCheckBox" name="controllerMenuTooltipsCheckBox">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>When using controller menus, make tooltips visible by default.</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Show Controller Tooltips By Default</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="showOwnedLabel">
|
<widget class="QLabel" name="showOwnedLabel">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
|
|
@ -21,6 +21,7 @@ namespace MWGui
|
||||||
|
|
||||||
ItemView::ItemView()
|
ItemView::ItemView()
|
||||||
: mScrollView(nullptr)
|
: mScrollView(nullptr)
|
||||||
|
, mControllerActiveWindow(false)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,12 +190,8 @@ namespace MWGui
|
||||||
{
|
{
|
||||||
mControllerActiveWindow = active;
|
mControllerActiveWindow = active;
|
||||||
|
|
||||||
MWBase::WindowManager* winMgr = MWBase::Environment::get().getWindowManager();
|
MWBase::Environment::get().getWindowManager()->setControllerTooltip(
|
||||||
if (winMgr->getControllerTooltip())
|
active && Settings::gui().mControllerTooltips);
|
||||||
{
|
|
||||||
winMgr->setCursorActive(false);
|
|
||||||
winMgr->setControllerTooltip(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (active)
|
if (active)
|
||||||
updateControllerFocus(-1, mControllerFocus);
|
updateControllerFocus(-1, mControllerFocus);
|
||||||
|
@ -214,7 +211,6 @@ namespace MWGui
|
||||||
// Select the focused item, if any.
|
// Select the focused item, if any.
|
||||||
if (mControllerFocus >= 0 && mControllerFocus < mItemCount)
|
if (mControllerFocus >= 0 && mControllerFocus < mItemCount)
|
||||||
{
|
{
|
||||||
MWBase::Environment::get().getWindowManager()->setControllerTooltip(false);
|
|
||||||
MyGUI::Widget* dragArea = mScrollView->getChildAt(0);
|
MyGUI::Widget* dragArea = mScrollView->getChildAt(0);
|
||||||
onSelectedItem(dragArea->getChildAt(mControllerFocus));
|
onSelectedItem(dragArea->getChildAt(mControllerFocus));
|
||||||
}
|
}
|
||||||
|
|
|
@ -149,11 +149,9 @@ namespace MWGui
|
||||||
mSpellButtons[0].first->setStateSelected(true);
|
mSpellButtons[0].first->setStateSelected(true);
|
||||||
|
|
||||||
MWBase::WindowManager* winMgr = MWBase::Environment::get().getWindowManager();
|
MWBase::WindowManager* winMgr = MWBase::Environment::get().getWindowManager();
|
||||||
|
winMgr->setControllerTooltip(Settings::gui().mControllerTooltips);
|
||||||
if (winMgr->getControllerTooltip())
|
if (winMgr->getControllerTooltip())
|
||||||
{
|
MWBase::Environment::get().getInputManager()->warpMouseToWidget(mSpellButtons[0].first);
|
||||||
winMgr->setCursorActive(false);
|
|
||||||
winMgr->setControllerTooltip(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Canvas size must be expressed with VScroll disabled, otherwise MyGUI would expand the scroll area when the
|
// Canvas size must be expressed with VScroll disabled, otherwise MyGUI would expand the scroll area when the
|
||||||
|
|
|
@ -103,7 +103,6 @@ namespace MWGui
|
||||||
mControllerButtons.a = "#{sSelect}";
|
mControllerButtons.a = "#{sSelect}";
|
||||||
mControllerButtons.b = "#{sCancel}";
|
mControllerButtons.b = "#{sCancel}";
|
||||||
mControllerButtons.x = "#{sOk}";
|
mControllerButtons.x = "#{sOk}";
|
||||||
mControllerButtons.r3 = "#{sInfo}";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -602,6 +601,7 @@ namespace MWGui
|
||||||
mControllerButtons.a = "#{sSelect}";
|
mControllerButtons.a = "#{sSelect}";
|
||||||
mControllerButtons.b = "#{sCancel}";
|
mControllerButtons.b = "#{sCancel}";
|
||||||
mControllerButtons.x = "#{sBuy}";
|
mControllerButtons.x = "#{sBuy}";
|
||||||
|
mControllerButtons.r3 = "#{sInfo}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -613,13 +613,6 @@ namespace MWGui
|
||||||
mPtr = actor;
|
mPtr = actor;
|
||||||
mNameEdit->setCaption({});
|
mNameEdit->setCaption({});
|
||||||
|
|
||||||
MWBase::WindowManager* winMgr = MWBase::Environment::get().getWindowManager();
|
|
||||||
if (Settings::gui().mControllerMenus && winMgr->getControllerTooltip())
|
|
||||||
{
|
|
||||||
winMgr->setCursorActive(false);
|
|
||||||
winMgr->setControllerTooltip(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
startEditing();
|
startEditing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -850,7 +843,11 @@ namespace MWGui
|
||||||
mEffectFocus = 0;
|
mEffectFocus = 0;
|
||||||
mRightColumn = false;
|
mRightColumn = false;
|
||||||
if (mAvailableButtons.size() > 0)
|
if (mAvailableButtons.size() > 0)
|
||||||
|
{
|
||||||
mAvailableButtons[0]->setStateSelected(true);
|
mAvailableButtons[0]->setStateSelected(true);
|
||||||
|
if (MWBase::Environment::get().getWindowManager()->getControllerTooltip())
|
||||||
|
MWBase::Environment::get().getInputManager()->warpMouseToWidget(mAvailableButtons[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1038,24 +1035,25 @@ namespace MWGui
|
||||||
|
|
||||||
bool EffectEditorBase::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
|
bool EffectEditorBase::onControllerButtonEvent(const SDL_ControllerButtonEvent& arg)
|
||||||
{
|
{
|
||||||
|
MWBase::WindowManager* winMgr = MWBase::Environment::get().getWindowManager();
|
||||||
|
|
||||||
if (arg.button == SDL_CONTROLLER_BUTTON_A)
|
if (arg.button == SDL_CONTROLLER_BUTTON_A)
|
||||||
{
|
{
|
||||||
if (!mRightColumn && mAvailableFocus >= 0 && mAvailableFocus < static_cast<int>(mAvailableButtons.size()))
|
if (!mRightColumn && mAvailableFocus >= 0 && mAvailableFocus < static_cast<int>(mAvailableButtons.size()))
|
||||||
{
|
{
|
||||||
onAvailableEffectClicked(mAvailableButtons[mAvailableFocus]);
|
onAvailableEffectClicked(mAvailableButtons[mAvailableFocus]);
|
||||||
MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click"));
|
winMgr->playSound(ESM::RefId::stringRefId("Menu Click"));
|
||||||
}
|
}
|
||||||
else if (mRightColumn && mEffectFocus >= 0 && mEffectFocus < static_cast<int>(mEffectButtons.size()))
|
else if (mRightColumn && mEffectFocus >= 0 && mEffectFocus < static_cast<int>(mEffectButtons.size()))
|
||||||
{
|
{
|
||||||
onEditEffect(mEffectButtons[mEffectFocus].second);
|
onEditEffect(mEffectButtons[mEffectFocus].second);
|
||||||
MWBase::Environment::get().getWindowManager()->playSound(ESM::RefId::stringRefId("Menu Click"));
|
winMgr->playSound(ESM::RefId::stringRefId("Menu Click"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSTICK)
|
else if (arg.button == SDL_CONTROLLER_BUTTON_RIGHTSTICK)
|
||||||
{
|
{
|
||||||
// Toggle info tooltip
|
// Toggle info tooltip
|
||||||
MWBase::Environment::get().getWindowManager()->setControllerTooltip(
|
winMgr->setControllerTooltip(!mRightColumn && !winMgr->getControllerTooltip());
|
||||||
!MWBase::Environment::get().getWindowManager()->getControllerTooltip());
|
|
||||||
}
|
}
|
||||||
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP)
|
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_UP)
|
||||||
{
|
{
|
||||||
|
@ -1098,6 +1096,8 @@ namespace MWGui
|
||||||
mEffectButtons[mEffectFocus].first->setStateSelected(false);
|
mEffectButtons[mEffectFocus].first->setStateSelected(false);
|
||||||
if (mAvailableFocus >= 0 && mAvailableFocus < static_cast<int>(mAvailableButtons.size()))
|
if (mAvailableFocus >= 0 && mAvailableFocus < static_cast<int>(mAvailableButtons.size()))
|
||||||
mAvailableButtons[mAvailableFocus]->setStateSelected(true);
|
mAvailableButtons[mAvailableFocus]->setStateSelected(true);
|
||||||
|
|
||||||
|
winMgr->setControllerTooltip(Settings::gui().mControllerTooltips);
|
||||||
}
|
}
|
||||||
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT && !mRightColumn && mEffectButtons.size() > 0)
|
else if (arg.button == SDL_CONTROLLER_BUTTON_DPAD_RIGHT && !mRightColumn && mEffectButtons.size() > 0)
|
||||||
{
|
{
|
||||||
|
@ -1106,6 +1106,8 @@ namespace MWGui
|
||||||
mAvailableButtons[mAvailableFocus]->setStateSelected(false);
|
mAvailableButtons[mAvailableFocus]->setStateSelected(false);
|
||||||
if (mEffectFocus >= 0 && mEffectFocus < static_cast<int>(mEffectButtons.size()))
|
if (mEffectFocus >= 0 && mEffectFocus < static_cast<int>(mEffectButtons.size()))
|
||||||
mEffectButtons[mEffectFocus].first->setStateSelected(true);
|
mEffectButtons[mEffectFocus].first->setStateSelected(true);
|
||||||
|
|
||||||
|
winMgr->setControllerTooltip(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scroll the list to keep the active item in view
|
// Scroll the list to keep the active item in view
|
||||||
|
@ -1120,7 +1122,7 @@ namespace MWGui
|
||||||
if (!mRightColumn && mAvailableFocus >= 0 && mAvailableFocus < static_cast<int>(mAvailableButtons.size()))
|
if (!mRightColumn && mAvailableFocus >= 0 && mAvailableFocus < static_cast<int>(mAvailableButtons.size()))
|
||||||
{
|
{
|
||||||
// Warp the mouse to the selected spell to show the tooltip
|
// Warp the mouse to the selected spell to show the tooltip
|
||||||
if (MWBase::Environment::get().getWindowManager()->getControllerTooltip())
|
if (winMgr->getControllerTooltip())
|
||||||
MWBase::Environment::get().getInputManager()->warpMouseToWidget(mAvailableButtons[mAvailableFocus]);
|
MWBase::Environment::get().getInputManager()->warpMouseToWidget(mAvailableButtons[mAvailableFocus]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,8 @@ namespace MWGui
|
||||||
: mScrollView(nullptr)
|
: mScrollView(nullptr)
|
||||||
, mShowCostColumn(true)
|
, mShowCostColumn(true)
|
||||||
, mHighlightSelected(true)
|
, mHighlightSelected(true)
|
||||||
|
, mControllerActiveWindow(false)
|
||||||
|
, mControllerFocus(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +96,6 @@ namespace MWGui
|
||||||
mLines.clear();
|
mLines.clear();
|
||||||
mButtons.clear();
|
mButtons.clear();
|
||||||
mGroupIndices.clear();
|
mGroupIndices.clear();
|
||||||
mControllerTooltip = false;
|
|
||||||
|
|
||||||
while (mScrollView->getChildCount())
|
while (mScrollView->getChildCount())
|
||||||
MyGUI::Gui::getInstance().destroyWidget(mScrollView->getChildAt(0));
|
MyGUI::Gui::getInstance().destroyWidget(mScrollView->getChildAt(0));
|
||||||
|
@ -231,6 +232,12 @@ namespace MWGui
|
||||||
height += lineHeight;
|
height += lineHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Settings::gui().mControllerMenus)
|
||||||
|
{
|
||||||
|
mControllerFocus = wrap(mControllerFocus, mButtons.size());
|
||||||
|
updateControllerFocus(-1, mControllerFocus);
|
||||||
|
}
|
||||||
|
|
||||||
// Canvas size must be expressed with VScroll disabled, otherwise MyGUI would expand the scroll area when the
|
// Canvas size must be expressed with VScroll disabled, otherwise MyGUI would expand the scroll area when the
|
||||||
// scrollbar is hidden
|
// scrollbar is hidden
|
||||||
mScrollView->setVisibleVScroll(false);
|
mScrollView->setVisibleVScroll(false);
|
||||||
|
@ -329,6 +336,13 @@ namespace MWGui
|
||||||
mScrollView->setViewOffset(MyGUI::IntPoint(0, 0));
|
mScrollView->setViewOffset(MyGUI::IntPoint(0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SpellView::setActiveControllerWindow(bool active)
|
||||||
|
{
|
||||||
|
mControllerActiveWindow = active;
|
||||||
|
if (active)
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void SpellView::onControllerButton(const unsigned char button)
|
void SpellView::onControllerButton(const unsigned char button)
|
||||||
{
|
{
|
||||||
if (mButtons.empty())
|
if (mButtons.empty())
|
||||||
|
@ -348,9 +362,8 @@ namespace MWGui
|
||||||
else if (button == SDL_CONTROLLER_BUTTON_RIGHTSTICK)
|
else if (button == SDL_CONTROLLER_BUTTON_RIGHTSTICK)
|
||||||
{
|
{
|
||||||
// Toggle info tooltip
|
// Toggle info tooltip
|
||||||
mControllerTooltip = !mControllerTooltip;
|
MWBase::Environment::get().getWindowManager()->setControllerTooltip(
|
||||||
if (mControllerTooltip && mControllerFocus >= 0 && mControllerFocus < static_cast<int>(mButtons.size()))
|
!MWBase::Environment::get().getWindowManager()->getControllerTooltip());
|
||||||
MWBase::Environment::get().getInputManager()->warpMouseToWidget(mButtons[mControllerFocus].first);
|
|
||||||
}
|
}
|
||||||
else if (button == SDL_CONTROLLER_BUTTON_DPAD_UP)
|
else if (button == SDL_CONTROLLER_BUTTON_DPAD_UP)
|
||||||
mControllerFocus--;
|
mControllerFocus--;
|
||||||
|
@ -390,6 +403,8 @@ namespace MWGui
|
||||||
|
|
||||||
if (prevFocus != mControllerFocus)
|
if (prevFocus != mControllerFocus)
|
||||||
updateControllerFocus(prevFocus, mControllerFocus);
|
updateControllerFocus(prevFocus, mControllerFocus);
|
||||||
|
else
|
||||||
|
updateControllerFocus(-1, mControllerFocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpellView::updateControllerFocus(int prevFocus, int newFocus)
|
void SpellView::updateControllerFocus(int prevFocus, int newFocus)
|
||||||
|
@ -404,7 +419,7 @@ namespace MWGui
|
||||||
prev->onMouseLostFocus(nullptr);
|
prev->onMouseLostFocus(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (newFocus >= 0 && newFocus < static_cast<int>(mButtons.size()))
|
if (mControllerActiveWindow && newFocus >= 0 && newFocus < static_cast<int>(mButtons.size()))
|
||||||
{
|
{
|
||||||
Gui::SharedStateButton* focused = mButtons[newFocus].first;
|
Gui::SharedStateButton* focused = mButtons[newFocus].first;
|
||||||
if (focused)
|
if (focused)
|
||||||
|
@ -421,7 +436,7 @@ namespace MWGui
|
||||||
mScrollView->setViewOffset(MyGUI::IntPoint(0, -lineHeight * (line - 5)));
|
mScrollView->setViewOffset(MyGUI::IntPoint(0, -lineHeight * (line - 5)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mControllerTooltip)
|
if (MWBase::Environment::get().getWindowManager()->getControllerTooltip())
|
||||||
MWBase::Environment::get().getInputManager()->warpMouseToWidget(focused);
|
MWBase::Environment::get().getInputManager()->warpMouseToWidget(focused);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,7 @@ namespace MWGui
|
||||||
|
|
||||||
void resetScrollbars();
|
void resetScrollbars();
|
||||||
|
|
||||||
|
void setActiveControllerWindow(bool active);
|
||||||
void onControllerButton(const unsigned char button);
|
void onControllerButton(const unsigned char button);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -99,8 +100,8 @@ namespace MWGui
|
||||||
/// Keep a list of group offsets for controller navigation
|
/// Keep a list of group offsets for controller navigation
|
||||||
std::vector<int> mGroupIndices;
|
std::vector<int> mGroupIndices;
|
||||||
|
|
||||||
|
bool mControllerActiveWindow;
|
||||||
int mControllerFocus;
|
int mControllerFocus;
|
||||||
bool mControllerTooltip;
|
|
||||||
void updateControllerFocus(int prevFocus, int newFocus);
|
void updateControllerFocus(int prevFocus, int newFocus);
|
||||||
|
|
||||||
void onSpellSelected(MyGUI::Widget* _sender);
|
void onSpellSelected(MyGUI::Widget* _sender);
|
||||||
|
|
|
@ -323,10 +323,12 @@ namespace MWGui
|
||||||
|
|
||||||
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
MyGUI::Window* window = mMainWidget->castType<MyGUI::Window>();
|
||||||
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
window->setCoord(x, active ? y : viewSize.height + 1, width, height);
|
||||||
|
|
||||||
|
MWBase::Environment::get().getWindowManager()->setControllerTooltip(
|
||||||
|
active && Settings::gui().mControllerTooltips);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (active)
|
mSpellView->setActiveControllerWindow(active);
|
||||||
mSpellView->update();
|
|
||||||
|
|
||||||
WindowBase::setActiveControllerWindow(active);
|
WindowBase::setActiveControllerWindow(active);
|
||||||
}
|
}
|
||||||
|
|
|
@ -949,10 +949,16 @@ namespace MWGui
|
||||||
if (winCount == 0)
|
if (winCount == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
mActiveControllerWindows[mode] = std::clamp(activeIndex, 0, winCount - 1);
|
activeIndex = std::clamp(activeIndex, 0, winCount - 1);
|
||||||
|
mActiveControllerWindows[mode] = activeIndex;
|
||||||
|
|
||||||
|
// Set active window last so inactive windows don't stomp on changes it makes, e.g. to tooltips.
|
||||||
for (int i = 0; i < winCount; i++)
|
for (int i = 0; i < winCount; i++)
|
||||||
mGuiModeStates[mode].mWindows[i]->setActiveControllerWindow(i == activeIndex);
|
{
|
||||||
|
if (i != activeIndex)
|
||||||
|
mGuiModeStates[mode].mWindows[i]->setActiveControllerWindow(false);
|
||||||
|
}
|
||||||
|
mGuiModeStates[mode].mWindows[activeIndex]->setActiveControllerWindow(true);
|
||||||
|
|
||||||
MWBase::Environment::get().getInputManager()->setGamepadGuiCursorEnabled(
|
MWBase::Environment::get().getInputManager()->setGamepadGuiCursorEnabled(
|
||||||
mGuiModeStates[mode].mWindows[activeIndex]->isGamepadCursorAllowed());
|
mGuiModeStates[mode].mWindows[activeIndex]->isGamepadCursorAllowed());
|
||||||
|
@ -1468,13 +1474,23 @@ namespace MWGui
|
||||||
if (mConsole && mConsole->isVisible())
|
if (mConsole && mConsole->isVisible())
|
||||||
mConsole->onOpen();
|
mConsole->onOpen();
|
||||||
|
|
||||||
if (Settings::gui().mControllerMenus && !mGuiModes.empty())
|
if (Settings::gui().mControllerMenus)
|
||||||
{
|
{
|
||||||
// Re-apply any controller-specific window changes.
|
if (mGuiModes.empty())
|
||||||
const GuiMode mode = mGuiModes.back();
|
setControllerTooltip(false);
|
||||||
int winCount = mGuiModeStates[mode].mWindows.size();
|
else
|
||||||
for (int i = 0; i < winCount; i++)
|
{
|
||||||
mGuiModeStates[mode].mWindows[i]->setActiveControllerWindow(i == mActiveControllerWindows[mode]);
|
// Re-apply any controller-specific window changes.
|
||||||
|
const GuiMode mode = mGuiModes.back();
|
||||||
|
int winCount = mGuiModeStates[mode].mWindows.size();
|
||||||
|
|
||||||
|
for (int i = 0; i < winCount; i++)
|
||||||
|
{
|
||||||
|
if (i != mActiveControllerWindows[mode])
|
||||||
|
mGuiModeStates[mode].mWindows[i]->setActiveControllerWindow(false);
|
||||||
|
}
|
||||||
|
mGuiModeStates[mode].mWindows[mActiveControllerWindows[mode]]->setActiveControllerWindow(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ namespace MWInput
|
||||||
, mGamepadGuiCursorEnabled(true)
|
, mGamepadGuiCursorEnabled(true)
|
||||||
, mGuiCursorEnabled(true)
|
, mGuiCursorEnabled(true)
|
||||||
, mJoystickLastUsed(false)
|
, mJoystickLastUsed(false)
|
||||||
|
, mGamepadMousePressed(false)
|
||||||
{
|
{
|
||||||
if (!controllerBindingsFile.empty())
|
if (!controllerBindingsFile.empty())
|
||||||
{
|
{
|
||||||
|
@ -142,6 +143,7 @@ namespace MWInput
|
||||||
if (arg.button == SDL_CONTROLLER_BUTTON_A) // We'll pretend that A is left click.
|
if (arg.button == SDL_CONTROLLER_BUTTON_A) // We'll pretend that A is left click.
|
||||||
{
|
{
|
||||||
bool mousePressSuccess = mMouseManager->injectMouseButtonPress(SDL_BUTTON_LEFT);
|
bool mousePressSuccess = mMouseManager->injectMouseButtonPress(SDL_BUTTON_LEFT);
|
||||||
|
mGamepadMousePressed = true;
|
||||||
if (MyGUI::InputManager::getInstance().getMouseFocusWidget())
|
if (MyGUI::InputManager::getInstance().getMouseFocusWidget())
|
||||||
{
|
{
|
||||||
MyGUI::Button* b
|
MyGUI::Button* b
|
||||||
|
@ -186,12 +188,13 @@ namespace MWInput
|
||||||
mJoystickLastUsed = true;
|
mJoystickLastUsed = true;
|
||||||
if (MWBase::Environment::get().getWindowManager()->isGuiMode())
|
if (MWBase::Environment::get().getWindowManager()->isGuiMode())
|
||||||
{
|
{
|
||||||
if (mGamepadGuiCursorEnabled)
|
if (mGamepadGuiCursorEnabled && (!Settings::gui().mControllerMenus || mGamepadMousePressed))
|
||||||
{
|
{
|
||||||
// Temporary mouse binding until keyboard controls are available:
|
// Temporary mouse binding until keyboard controls are available:
|
||||||
if (arg.button == SDL_CONTROLLER_BUTTON_A) // We'll pretend that A is left click.
|
if (arg.button == SDL_CONTROLLER_BUTTON_A) // We'll pretend that A is left click.
|
||||||
{
|
{
|
||||||
bool mousePressSuccess = mMouseManager->injectMouseButtonRelease(SDL_BUTTON_LEFT);
|
bool mousePressSuccess = mMouseManager->injectMouseButtonRelease(SDL_BUTTON_LEFT);
|
||||||
|
mGamepadMousePressed = false;
|
||||||
if (mBindingsManager->isDetectingBindingState()) // If the player just triggered binding, don't let
|
if (mBindingsManager->isDetectingBindingState()) // If the player just triggered binding, don't let
|
||||||
// button release bind.
|
// button release bind.
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -62,6 +62,7 @@ namespace MWInput
|
||||||
bool mGamepadGuiCursorEnabled;
|
bool mGamepadGuiCursorEnabled;
|
||||||
bool mGuiCursorEnabled;
|
bool mGuiCursorEnabled;
|
||||||
bool mJoystickLastUsed;
|
bool mJoystickLastUsed;
|
||||||
|
bool mGamepadMousePressed;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,6 +26,7 @@ namespace Settings
|
||||||
SettingValue<float> mTooltipDelay{ mIndex, "GUI", "tooltip delay", makeMaxSanitizerFloat(0) };
|
SettingValue<float> mTooltipDelay{ mIndex, "GUI", "tooltip delay", makeMaxSanitizerFloat(0) };
|
||||||
SettingValue<bool> mStretchMenuBackground{ mIndex, "GUI", "stretch menu background" };
|
SettingValue<bool> mStretchMenuBackground{ mIndex, "GUI", "stretch menu background" };
|
||||||
SettingValue<bool> mControllerMenus{ mIndex, "GUI", "controller menus" };
|
SettingValue<bool> mControllerMenus{ mIndex, "GUI", "controller menus" };
|
||||||
|
SettingValue<bool> mControllerTooltips{ mIndex, "GUI", "controller tooltips" };
|
||||||
SettingValue<bool> mSubtitles{ mIndex, "GUI", "subtitles" };
|
SettingValue<bool> mSubtitles{ mIndex, "GUI", "subtitles" };
|
||||||
SettingValue<bool> mHitFader{ mIndex, "GUI", "hit fader" };
|
SettingValue<bool> mHitFader{ mIndex, "GUI", "hit fader" };
|
||||||
SettingValue<bool> mWerewolfOverlay{ mIndex, "GUI", "werewolf overlay" };
|
SettingValue<bool> mWerewolfOverlay{ mIndex, "GUI", "werewolf overlay" };
|
||||||
|
|
|
@ -1455,5 +1455,13 @@ to default Morrowind fonts. Check this box if you still prefer original fonts ov
|
||||||
<source>Enable Controller Menus</source>
|
<source>Enable Controller Menus</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source><html><head/><body><p>When using controller menus, make tooltips visible by default.</p></body></html></source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Show Controller Tooltips By Default</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -1455,5 +1455,13 @@ to default Morrowind fonts. Check this box if you still prefer original fonts ov
|
||||||
<source>Enable Controller Menus</source>
|
<source>Enable Controller Menus</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source><html><head/><body><p>When using controller menus, make tooltips visible by default.</p></body></html></source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Show Controller Tooltips By Default</source>
|
||||||
|
<translation></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -1458,5 +1458,13 @@ to default Morrowind fonts. Check this box if you still prefer original fonts ov
|
||||||
<source><html><head/><body><p>Make it easier to use game menus with a controller.</p></body></html></source>
|
<source><html><head/><body><p>Make it easier to use game menus with a controller.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Faciliter l'utilisation des menus de jeu avec une manette.</p></body></html></translation>
|
<translation><html><head/><body><p>Faciliter l'utilisation des menus de jeu avec une manette.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source><html><head/><body><p>When using controller menus, make tooltips visible by default.</p></body></html></source>
|
||||||
|
<translation><html><head/><body><p>Lorsque vous utilisez les menus du contrôleur, rendez les info-bulles visibles par défaut.</p></body></html></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Show Controller Tooltips By Default</source>
|
||||||
|
<translation>Afficher les info-bulles du contrôleur par défaut</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -1470,5 +1470,13 @@ to default Morrowind fonts. Check this box if you still prefer original fonts ov
|
||||||
<source>Enable Controller Menus</source>
|
<source>Enable Controller Menus</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source><html><head/><body><p>When using controller menus, make tooltips visible by default.</p></body></html></source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Show Controller Tooltips By Default</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -1474,5 +1474,13 @@ de ordinarie fonterna i Morrowind. Bocka denna ruta om du ändå föredrar ordin
|
||||||
<source>Enable Controller Menus</source>
|
<source>Enable Controller Menus</source>
|
||||||
<translation>Aktivera handkontrollmenyer</translation>
|
<translation>Aktivera handkontrollmenyer</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source><html><head/><body><p>When using controller menus, make tooltips visible by default.</p></body></html></source>
|
||||||
|
<translation><html><head/><body><p>När du använder kontrollmenyer, synliggör verktygstips som standard.</p></body></html></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Show Controller Tooltips By Default</source>
|
||||||
|
<translation>Visa verktygstips för kontrollenheter som standard</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -204,6 +204,9 @@ stretch menu background = false
|
||||||
# Make menus easier to navigate with a controller.
|
# Make menus easier to navigate with a controller.
|
||||||
controller menus = false
|
controller menus = false
|
||||||
|
|
||||||
|
# When true, you do not need to press R3 to show tooltips.
|
||||||
|
controller tooltips = false
|
||||||
|
|
||||||
# Subtitles for NPC spoken dialog and some sound effects.
|
# Subtitles for NPC spoken dialog and some sound effects.
|
||||||
subtitles = false
|
subtitles = false
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue