@@ -167,7 +167,7 @@ def center_window(self, width, height):
167167 x = (screen_width // 2 ) - (width // 2 )
168168 y = (screen_height // 3 ) - (height // 3 )
169169 self .root .geometry (f"{ width } x{ height } +{ x } +{ y } " )
170- self .root .minsize (540 , 679 )
170+ self .root .minsize (540 , 687 )
171171
172172
173173 def load_playlist (self ):
@@ -869,7 +869,7 @@ def create_widgets(self, root):
869869
870870 # Фрейм для таблицы с ползунком
871871 table_frame = ttk .Frame (main_frame )
872- table_frame .pack (fill = tk .BOTH , expand = True , pady = (0 , 15 ))
872+ table_frame .pack (fill = tk .BOTH , expand = False , pady = (0 , 15 ))
873873 table_frame .grid_propagate (False )
874874
875875 # Уменьшаем количество видимых строк в таблице на 1, чтобы компенсировать добавление поля поиска
@@ -961,7 +961,7 @@ def create_widgets(self, root):
961961
962962 # Поле для сообщений
963963 message_frame = ttk .Frame (main_frame )
964- message_frame .pack (fill = tk .X , pady = (6 , 10 ))
964+ message_frame .pack (fill = tk .X , pady = (12 , 12 ))
965965
966966 # Фиксируем высоту фрейма сообщений
967967 message_frame .pack_propagate (False ) # Отключаем автоматическое изменение размера
@@ -1812,32 +1812,31 @@ def compare_states(self, state1, state2):
18121812 def restore_state (self , state ):
18131813 """Восстанавливает состояние с полным обновлением интерфейса"""
18141814 # Получаем текущие пути перед восстановлением
1815- current_paths = {track ['path' ] for track in self .display_tracks } if self .display_tracks else set ()
1815+ current_paths = {track ['path' ]: track for track in self .display_tracks } if self .display_tracks else {}
18161816
18171817 # Обновляем основной список
18181818 self .display_tracks = []
18191819 for track in state ['tracks' ]:
1820- new_track = track .copy ()
1821-
1822- # Сохраняем флаг found из текущего состояния если трек существует
1823- existing_track = next (
1824- (t for t in self .display_tracks
1825- if t ['path' ] == track ['path' ]),
1826- None
1827- )
1828- if existing_track :
1829- new_track ['found' ] = existing_track .get ('found' , False )
1830- else :
1831- # Для новых треков устанавливаем found в зависимости от текущего фильтра
1832- search_term = self .search_entry .get ().lower ()
1833- new_track ['found' ] = not search_term or search_term in new_track ['name' ].lower ()
1820+ new_track = track .copy ()
18341821
1835- # Помечаем восстановленные треки
1836- if track ['path' ] not in current_paths :
1837- new_track ['was_restored' ] = True
1822+ # Проверяем, существует ли трек в текущем состоянии
1823+ existing_track = current_paths .get (track ['path' ])
1824+
1825+ if existing_track :
1826+ # Сохраняем флаги из текущего состояния
1827+ new_track ['found' ] = existing_track .get ('found' , False )
1828+ # Сохраняем тег 'was_restored', если он был у существующего трека
1829+ if existing_track .get ('was_restored' , False ):
1830+ new_track ['was_restored' ] = True
1831+ else :
1832+ # Для новых треков устанавливаем found в зависимости от текущего фильтра
1833+ search_term = self .search_entry .get ().lower ()
1834+ new_track ['found' ] = not search_term or search_term in new_track ['name' ].lower ()
1835+ # Помечаем восстановленные треки
1836+ new_track ['was_restored' ] = True
1837+
1838+ self .display_tracks .append (new_track )
18381839
1839- self .display_tracks .append (new_track )
1840-
18411840 # Обновляем временные списки
18421841 self .temp_list = self .display_tracks .copy ()
18431842 self .shuffled_list = None
0 commit comments