mirror of https://github.com/stella-emu/stella.git
improved dialogs and launcher navigation with joysticks (left and right)
This commit is contained in:
parent
0cfc88e10c
commit
4e1c13ce6d
|
@ -302,21 +302,18 @@ void PhysicalJoystickHandler::setStickDefaultMapping(int stick,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case kMenuMode: // Default menu/UI events
|
case kMenuMode: // Default menu/UI events
|
||||||
if(stick == 0)
|
setDefaultAxis( stick, 0, 0, Event::UINavPrev );
|
||||||
{
|
setDefaultAxis( stick, 0, 1, Event::UINavNext );
|
||||||
setDefaultAxis( 0, 0, 0, Event::UILeft );
|
setDefaultAxis( stick, 1, 0, Event::UIUp );
|
||||||
setDefaultAxis( 0, 0, 1, Event::UIRight );
|
setDefaultAxis( stick, 1, 1, Event::UIDown );
|
||||||
setDefaultAxis( 0, 1, 0, Event::UIUp );
|
|
||||||
setDefaultAxis( 0, 1, 1, Event::UIDown );
|
|
||||||
|
|
||||||
// Left joystick (assume joystick zero, button zero)
|
// Left joystick (assume joystick zero, button zero)
|
||||||
setDefaultBtn( 0, 0, Event::UISelect );
|
setDefaultBtn( stick, 0, Event::UISelect );
|
||||||
|
|
||||||
setDefaultHat( 0, 0, JoyHat::LEFT, Event::UILeft );
|
setDefaultHat( stick, 0, JoyHat::LEFT, Event::UINavPrev );
|
||||||
setDefaultHat( 0, 0, JoyHat::RIGHT, Event::UIRight );
|
setDefaultHat( stick, 0, JoyHat::RIGHT, Event::UINavNext );
|
||||||
setDefaultHat( 0, 0, JoyHat::UP, Event::UIUp );
|
setDefaultHat( stick, 0, JoyHat::UP, Event::UIUp );
|
||||||
setDefaultHat( 0, 0, JoyHat::DOWN, Event::UIDown );
|
setDefaultHat( stick, 0, JoyHat::DOWN, Event::UIDown );
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -572,11 +572,16 @@ void Dialog::handleJoyUp(int stick, int button)
|
||||||
_focusedWidget->handleJoyUp(stick, button);
|
_focusedWidget->handleJoyUp(stick, button);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Event::Type Dialog::getJoyAxisEvent(int stick, int axis, int value)
|
||||||
|
{
|
||||||
|
return instance().eventHandler().eventForJoyAxis(stick, axis, value, kMenuMode);
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void Dialog::handleJoyAxis(int stick, int axis, int value)
|
void Dialog::handleJoyAxis(int stick, int axis, int value)
|
||||||
{
|
{
|
||||||
Event::Type e =
|
Event::Type e = getJoyAxisEvent(stick, axis, value);
|
||||||
instance().eventHandler().eventForJoyAxis(stick, axis, value, kMenuMode);
|
|
||||||
|
|
||||||
// Unless a widget has claimed all responsibility for data, we assume
|
// Unless a widget has claimed all responsibility for data, we assume
|
||||||
// that if an event exists for the given data, it should have priority.
|
// that if an event exists for the given data, it should have priority.
|
||||||
|
|
|
@ -142,6 +142,7 @@ class Dialog : public GuiObject
|
||||||
virtual void handleJoyAxis(int stick, int axis, int value);
|
virtual void handleJoyAxis(int stick, int axis, int value);
|
||||||
virtual bool handleJoyHat(int stick, int hat, JoyHat value);
|
virtual bool handleJoyHat(int stick, int hat, JoyHat value);
|
||||||
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
virtual void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||||
|
virtual Event::Type getJoyAxisEvent(int stick, int axis, int value);
|
||||||
|
|
||||||
Widget* findWidget(int x, int y) const; // Find the widget at pos x,y if any
|
Widget* findWidget(int x, int y) const; // Find the widget at pos x,y if any
|
||||||
|
|
||||||
|
|
|
@ -491,6 +491,33 @@ void LauncherDialog::handleKeyDown(StellaKey key, StellaMod mod)
|
||||||
Dialog::handleKeyDown(key, mod);
|
Dialog::handleKeyDown(key, mod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Event::Type LauncherDialog::getJoyAxisEvent(int stick, int axis, int value)
|
||||||
|
{
|
||||||
|
Event::Type e = instance().eventHandler().eventForJoyAxis(stick, axis, value, kMenuMode);
|
||||||
|
|
||||||
|
if(myUseMinimalUI)
|
||||||
|
{
|
||||||
|
// map axis events for launcher
|
||||||
|
switch(e)
|
||||||
|
{
|
||||||
|
case Event::UINavPrev:
|
||||||
|
// convert unused previous item event into page-up event
|
||||||
|
e = Event::UIPgUp;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Event::UINavNext:
|
||||||
|
// convert unused next item event into page-down event
|
||||||
|
e = Event::UIPgDown;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
void LauncherDialog::handleMouseDown(int x, int y, MouseButton b, int clickCount)
|
void LauncherDialog::handleMouseDown(int x, int y, MouseButton b, int clickCount)
|
||||||
{
|
{
|
||||||
|
|
|
@ -88,6 +88,7 @@ class LauncherDialog : public Dialog
|
||||||
void handleKeyDown(StellaKey key, StellaMod mod) override;
|
void handleKeyDown(StellaKey key, StellaMod mod) override;
|
||||||
void handleMouseDown(int x, int y, MouseButton b, int clickCount) override;
|
void handleMouseDown(int x, int y, MouseButton b, int clickCount) override;
|
||||||
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
void handleCommand(CommandSender* sender, int cmd, int data, int id) override;
|
||||||
|
Event::Type LauncherDialog::getJoyAxisEvent(int stick, int axis, int value) override;
|
||||||
|
|
||||||
void loadConfig() override;
|
void loadConfig() override;
|
||||||
void updateListing(const string& nameToSelect = "");
|
void updateListing(const string& nameToSelect = "");
|
||||||
|
|
Loading…
Reference in New Issue