summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY4
-rw-r--r--menuitems.c7
3 files changed, 12 insertions, 1 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 0fbfb989..46093009 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -341,6 +341,8 @@ Andy Grobb <Charly98@01019freenet.de>
for reporting a bug in handling min/max borders when entering integer values
for reporting a problem with replaying in fast forward mode if the video directory
is mounted via a Samba share
+ for suggesting to make menu items that are derived from cMenuEditIntItem loop
+ though their values if they have a dedicated minimum or maximum limit
Thomas Heiligenmann <thomas@heiligenmann.de>
for implementing the SVDRP commands LSTR and DELR
diff --git a/HISTORY b/HISTORY
index b78b9176..d3a24907 100644
--- a/HISTORY
+++ b/HISTORY
@@ -4830,3 +4830,7 @@ Video Disk Recorder Revision History
require detatching receivers (suggested by Anssi Hannula).
- Fixed handling numeric keys in the channel display after switching channel groups
(thanks to Andreas Regel).
+- Menu items derived from cMenuEditIntItem now loop though their values if they
+ have a dedicated minimum or maximum limit (suggested by Andy Grobb). Looping is
+ only done for normal keypresses, not for repeated ones. This allows the user to
+ scroll the value all the way to the limit by keeping the key pressed.
diff --git a/menuitems.c b/menuitems.c
index 517664c7..cbfcf053 100644
--- a/menuitems.c
+++ b/menuitems.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: menuitems.c 1.45 2006/06/03 13:20:01 kls Exp $
+ * $Id: menuitems.c 1.46 2006/07/23 09:42:17 kls Exp $
*/
#include "menuitems.h"
@@ -75,6 +75,7 @@ eOSState cMenuEditIntItem::ProcessKey(eKeys Key)
if (state == osUnknown) {
int newValue = *value;
+ bool IsRepeat = Key & k_Repeat;
Key = NORMALKEY(Key);
switch (Key) {
case kNone: break;
@@ -88,10 +89,14 @@ eOSState cMenuEditIntItem::ProcessKey(eKeys Key)
case kLeft: // TODO might want to increase the delta if repeated quickly?
newValue = *value - 1;
fresh = true;
+ if (!IsRepeat && newValue < min && max != INT_MAX)
+ newValue = max;
break;
case kRight:
newValue = *value + 1;
fresh = true;
+ if (!IsRepeat && newValue > max && min != INT_MIN)
+ newValue = min;
break;
default:
if (*value < min) { *value = min; Set(); }