mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Fixed setting the current item and counter values in the Recordings menu after deleting the last recording in a subfolder
This commit is contained in:
		
							
								
								
									
										4
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								HISTORY
									
									
									
									
									
								
							| @@ -8828,7 +8828,7 @@ Video Disk Recorder Revision History | ||||
| - Empty adaptation field TS packets are now skipped when recording (thanks to | ||||
|   Christopher Reimer, based on the "AFFcleaner" by Stefan P<>schel). | ||||
|  | ||||
| 2016-12-08: Version 2.3.2 | ||||
| 2016-12-09: Version 2.3.2 | ||||
|  | ||||
| - Fixed a crash when deleting a recording (reported by Oliver Endriss). | ||||
| - Fixed an overflow of PIDs in a receiver (thanks to Robert Hannebauer). | ||||
| @@ -8844,3 +8844,5 @@ Video Disk Recorder Revision History | ||||
|   the menu or through SVDRP (as well as other operations that try to acquire a | ||||
|   read lock within a write lock). | ||||
| - Fixed a crash when trying to delete a channel that is being used by a timer. | ||||
| - Fixed setting the current item and counter values in the Recordings menu after | ||||
|   deleting the last recording in a subfolder. | ||||
|   | ||||
							
								
								
									
										36
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								menu.c
									
									
									
									
									
								
							| @@ -4,7 +4,7 @@ | ||||
|  * See the main source file 'vdr.c' for copyright information and | ||||
|  * how to reach the author. | ||||
|  * | ||||
|  * $Id: menu.c 4.15 2016/12/08 10:48:16 kls Exp $ | ||||
|  * $Id: menu.c 4.16 2016/12/09 14:54:24 kls Exp $ | ||||
|  */ | ||||
|  | ||||
| #include "menu.h" | ||||
| @@ -2954,10 +2954,9 @@ void cMenuRecordings::Set(bool Refresh) | ||||
|      const char *CurrentRecording = *fileName ? *fileName : cReplayControl::LastReplayed(); | ||||
|      cRecordings *Recordings = cRecordings::GetRecordingsWrite(recordingsStateKey); // write access is necessary for sorting! | ||||
|      cMenuRecordingItem *LastItem = NULL; | ||||
|      if (Refresh) { | ||||
|         if (cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current())) | ||||
|            CurrentRecording = ri->Recording()->FileName(); | ||||
|         } | ||||
|      if (cMenuRecordingItem *ri = (cMenuRecordingItem *)Get(Current())) | ||||
|         CurrentRecording = ri->Recording()->FileName(); | ||||
|      int current = Current(); | ||||
|      Clear(); | ||||
|      GetRecordingsSortMode(DirectoryName()); | ||||
|      Recordings->Sort(); | ||||
| @@ -2994,11 +2993,13 @@ void cMenuRecordings::Set(bool Refresh) | ||||
|                LastDir->IncrementCounter(Recording->IsNew()); | ||||
|             } | ||||
|          } | ||||
|      if (Current() < 0) | ||||
|         SetCurrent(Get(current)); // last resort, in case the recording was deleted | ||||
|      SetMenuSortMode(RecordingsSortMode == rsmName ? msmName : msmTime); | ||||
|      recordingsStateKey.Remove(false); // sorting doesn't count as a real modification | ||||
|      if (Refresh) | ||||
|         Display(); | ||||
|      } | ||||
|   if (Refresh) | ||||
|      Display(); | ||||
| } | ||||
|  | ||||
| void cMenuRecordings::SetPath(const char *Path) | ||||
| @@ -3172,8 +3173,6 @@ eOSState cMenuRecordings::Sort(void) | ||||
|  | ||||
| eOSState cMenuRecordings::ProcessKey(eKeys Key) | ||||
| { | ||||
|   if (!HasSubMenu()) | ||||
|      Set(); // react on any changes to the recordings list | ||||
|   bool HadSubMenu = HasSubMenu(); | ||||
|   eOSState state = cOsdMenu::ProcessKey(Key); | ||||
|  | ||||
| @@ -3199,7 +3198,8 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key) | ||||
|         return state; // closes all recording menus except for the top one | ||||
|      Set(); // this is the top level menu, so we refresh it... | ||||
|      Open(true); // ...and open any necessary submenus to show the new name | ||||
|      Display(); | ||||
|      if (!HasSubMenu()) | ||||
|         Display(); | ||||
|      path = NULL; | ||||
|      fileName = NULL; | ||||
|      } | ||||
| @@ -3211,14 +3211,16 @@ eOSState cMenuRecordings::ProcessKey(eKeys Key) | ||||
|            ri->SetRecording(riSub->Recording()); | ||||
|         } | ||||
|      } | ||||
|   if (Key == kYellow && HadSubMenu && !HasSubMenu()) { | ||||
|      // the last recording in a subdirectory was deleted, so let's go back up | ||||
|      cOsdMenu::Del(Current()); | ||||
|      if (!Count()) | ||||
|         return osBack; | ||||
|      Display(); | ||||
|      } | ||||
|   if (!HasSubMenu()) { | ||||
|      if (HadSubMenu) { | ||||
|         if (Key == kYellow) { | ||||
|            // the last recording in a subdirectory was deleted, so let's go back up | ||||
|            cOsdMenu::Del(Current()); | ||||
|            if (!Count()) | ||||
|               return osBack; | ||||
|            } | ||||
|         } | ||||
|      Set(true); | ||||
|      if (Key != kNone) | ||||
|         SetHelpKeys(); | ||||
|      } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user