Index: GUIListControl.cs =================================================================== --- GUIListControl.cs (revision 26565) +++ GUIListControl.cs (working copy) @@ -270,6 +270,9 @@ protected int _lastSearchItem = 0; protected bool _enableSMSsearch = true; + private DateTime _scrollTimer = DateTime.Now; + protected string _scrollDirection = ""; + public GUIListControl(int dwParentID) : base(dwParentID) { } @@ -628,6 +631,10 @@ protected virtual void RenderLabel(float timePassed, int buttonNr, int dwPosX, int dwPosY, bool gotFocus) { + GUIListItem scrollItem = SelectedListItem; + string firstChar = scrollItem.Label.Substring(0, 1).ToUpper(); + GUIPropertyManager.SetProperty("#selecteditem.firstchar", firstChar); + GUIListItem pItem = _listItems[buttonNr + _offset]; long dwColor = _textColor; if (pItem.Shaded) @@ -1054,6 +1061,17 @@ RenderScrollbar(timePassed, dwPosY); + TimeSpan ts = DateTime.Now - _scrollTimer; + if (ts.TotalMilliseconds < 100) //how close keypresses should be, before they trigger the label showing + { + GUIPropertyManager.SetProperty("#scrolling." + _scrollDirection, "yes"); + } + else + { + GUIPropertyManager.SetProperty("#scrolling.up", "no"); + GUIPropertyManager.SetProperty("#scrolling.down", "no"); + } + if (Focus) { GUIPropertyManager.SetProperty("#highlightedbutton", string.Empty); @@ -2411,6 +2429,8 @@ action.wID = Action.ActionType.ACTION_MOVE_UP; if (_listType == ListType.CONTROL_LIST) { + _scrollDirection = "up"; + _scrollTimer = DateTime.Now; if ((_cursorX > _scrollStartOffset) || ((_cursorX > 0) && (_offset == 0))) { _cursorX--; @@ -2479,6 +2499,8 @@ action.wID = Action.ActionType.ACTION_MOVE_DOWN; if (_listType == ListType.CONTROL_LIST) { + _scrollDirection = "down"; + _scrollTimer = DateTime.Now; if ((_cursorX + 1 + _scrollStartOffset < _itemsPerPage) || (_offset + 1 + _cursorX + _scrollStartOffset >= _listItems.Count)) {