Bug 9912 - INPUT.List needs up/down mappings to make sure scrolling is possible
: INPUT.List needs up/down mappings to make sure scrolling is possible
Status: RESOLVED FIXED
Product: Logitech Media Server
Classification: Unclassified
Component: Player UI
: 7.3.0
: PC Other
: -- normal (vote)
: ---
Assigned To: Adrian Smith
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2008-11-05 17:08 UTC by Peter Watkins
Modified: 2008-11-13 14:32 UTC (History)
0 users

See Also:
Category: ---


Attachments
first stab at a patch to fix this, only tested with SoftSqueeze arrow keys (602 bytes, patch)
2008-11-05 17:09 UTC, Peter Watkins
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Peter Watkins 2008-11-05 17:08:24 UTC
My ContextMenu plugin works by pushing the player into INPUT.List mode. With SqueezeCenter 7.3, if I do this while a screensaver is active, the [screensaver] button mappings that make up/down run "done_passbackplaylist" control interpretation of the buttons, making it impossible to scroll the INPUT.List options. It seems to me that INPUT.List should always allow scrolling up/down, so [INPUT.List] should define up/down mappings to make sure.
Comment 1 Peter Watkins 2008-11-05 17:09:50 UTC
Created attachment 4208 [details]
first stab at a patch to fix this, only tested with SoftSqueeze arrow keys
Comment 2 Peter Watkins 2008-11-06 16:21:51 UTC
How to trigger/see the bug:
 1) install ContextMenu 7a17 from http://www.tux.org/~peterw/slim/slim7/ContextMenu/
 2) set the When Playing screensaver to Jump to Now Playing
 3) start playing music
 4) wait for the screensaver to kick in
 5) hold the right arrow

You'll see a ContextMenu INPUT.List screen, complete with (X of Y) count on line1. Try scrolling with up or down arrows -- you can't. In your log you may see messages like this:

Slim::Hardware::IR::executeButton (1088) Error: Subroutine for irCode: [done_passbackplaylist] mode: [] does not exist!

The mode stack ($client->modeStack) when this happens looks something like

home, INPUT.List, playlist, screensaver, INPUT.List

with INPUT.List being the current mode. Since it doesn't define mapping for arrow up/down and knob left/right, the [screensaver] mappings control behavior, and the list isn't scrollable.

Apply my patch to the map file and restart SC7 and after step 5 you'll be able to scroll the list.
Comment 3 James Richardson 2008-11-10 09:22:32 UTC
Triode: care to comment on this one?  how does the patch look to you
Comment 4 Adrian Smith 2008-11-10 11:50:03 UTC
I don't see a downside to this patch, other than bloating the Default.map file.

However it does seem a corner case for Peter's plugin - normally I would expect a screensaver to be poped as soon as the user presses a button in the on state.

Is it possible to pop the screensaver and then push input.list Peter?  Or for the off mode saver do you need to be able to push input.list while remaining off?
Comment 5 Peter Watkins 2008-11-10 14:00:51 UTC
Popping out of modes could be tough. It's not just a screensaver/off problem, it should happen any time the closest parent mode doesn't define the usual up/down functions in its mapping -- [screensaver] is just the first place I encountered this in 7.3. 

Plus the design of contextmenu --deliberately-- is to change the state minimally, so plugin developers can do their own mode popping if they want something to execute in the mode that was in place before the context menu was requested. The button commands provided by ContextMenu itself demonstrate this notion.

Yes, I do need the ability to use INPUT.List while the player is off -- I don't want context menu users having to endure amplifier+speaker thumps, nor playback restarting because the player was synced before being turned off in order to scroll through to find the Size Button or Brightness Button choices on a Boom mini-remote, for instance.

I probably can use the irmaps API introduced in SC 7.1.x to programatically fix the INPUT.List mappings (just as I programatically add arrow_right.hold and knob_down.hold mappings), it just seems like up/down ought to definitely work in the UI's in INPUT.List mode. And this is more easily fixed in the .map file than in Perl code. 

Thanks.

P.S. If anyone else wants to test, an easier way to install ContextMenu in 7.3 is to use this URL in the Extension Downloader interface: http://www.tux.org/~peterw/slim/slim7/repodata.xml :-)
Comment 6 Adrian Smith 2008-11-10 14:18:02 UTC
So I think this will only be a problem with screensavers as no other modes block out the up/down commands in the same way.

That said it seems reasonable to add this.
Comment 7 Peter Watkins 2008-11-12 19:04:23 UTC
That'd be great. I just tested on a Boom and confirmed the patch is needed for it, too, and does fix INPUT.List for Boom knob operations, too.

Thanks.
Comment 8 Adrian Smith 2008-11-13 14:32:18 UTC
change 23926