AIMP Forum
AIMP for PC => Skin Editor, Skin Engine => Ошибки и замечания / Bugs => Topic started by: gr-e on July 02, 2024, 23:25:55
-
Сейчас немного странное поведение получается - кнопка всё равно скрывается, несмотря на то, что она в нажатом состоянии.
В качестве решения можно сохранять состояние контейнера IsActive = 1, если у одного из дочерних элементов открыто меню.
(https://i.imgur.com/FIvp63w.gif) (https://i.imgur.com/eq1FANA.gif)
-
Скиньте пример скина
-
Ну вот на первой гифке - окно визуализаций Charm. При открытом меню кнопка AIMP скрывается вместе с заголовком окна.
-
Ну вот на первой гифке - окно визуализаций Charm.
Так, вот, из-за этой связи:
(https://www.aimp.ru/forum/index.php?action=dlattach;topic=73065.0;attach=71789)
-
Так, вот, из-за этой связи:
Речь о том, чтобы кнопка не скрывалась, если у неё открыто меню. Если убрать эту связь, она вообще скрываться не будет.
-
Поправил, вот сборка, попробуйте: https://disk.yandex.ru/d/pFZKWtopDjP_Ow
-
Так, проблема была в том, что меню "пропускало" через себя сообщения мыши?
-
Поправил, вот сборка, попробуйте
Поведение скрывающихся элементов теперь как надо, однако, появились другие проблемы: теперь при открытом меню интерфейс плеера не реагирует на курсор, сам курсор меняется на "руку", для нажатой кнопки не срабатывает событие OnMouseLeave.
-
Так, проблема была в том, что меню "пропускало" через себя сообщения мыши?
Не совсем, менюшка забирала на себя кэпчу у кнопки, а скин-движок "отпускал" ее активность, не учитывая, что кэпча у дочернего элемента
-
теперь при открытом меню интерфейс плеера не реагирует на курсор, сам курсор меняется на "руку", для нажатой кнопки не срабатывает событие OnMouseLeave
Я смотрю, это пошло в релиз. Если пофиксить не вариант, думаю, лучше вернуть как было
-
для нажатой кнопки не срабатывает событие OnMouseLeave.
Хм, пропустил ваше сообщение, поэтому и не поправил...
-
для нажатой кнопки не срабатывает событие OnMouseLeave
Перепроверил - событие срабатывает, сразу после того, как менюшка закроется и мышь окажется над другим элементом.
-
За курсор - подтверждаю, поправлю
-
Перепроверил - событие срабатывает, сразу после того, как менюшка закроется и мышь окажется над другим элементом.
До этого оно срабатывало при появлении меню. Теперь не понять, то ли пользователь держит кнопку мыши, то ли открылось контекстное меню
-
Теперь не понять, то ли пользователь держит кнопку мыши, то ли открылось контекстное меню
Это одно и тоже - кнопка нажата.
До этого оно срабатывало при появлении меню
ну это как раз и неправильно.
С курсором поправил - сборку перезалил.
-
ну это как раз и неправильно.
Возможно, но хотя бы OnMouseUp при отпускании кнопки мыши должен срабатывать.
В результате в скине (https://www.aimp.ru/forum/index.php?topic=57809.0) поломалась вот эта штука, которая должна появляться только при зажатой ЛКМ:
(https://i.imgur.com/nZLFOCG.gif)
С курсором поправил - сборку перезалил.
Курсор исправлен, спасибо.
Фоновые элементы при открытом меню всё так же не подсвечиваются. Мелочь, конечно, но создается впечатление, что при первом клике вне контекстного меню они не нажмутся (как в UWP приложениях).
-
Возможно, но хотя бы OnMouseUp при отпускании кнопки мыши должен срабатывать.
Он срабатывает, менюшка как раз на MouseUp и показывается (перед обработчиком).
Фоновые элементы при открытом меню всё так же не подсвечиваются.
Они и не должны подсвечиваться в этом случае.
В результате в скине поломалась вот эта штука, которая должна появляться только при зажатой ЛКМ:
а как вы это реализовали?
-
Он срабатывает, менюшка как раз на MouseUp и показывается (перед обработчиком).
Вот, пример накидал (во вложении)
MouseUp срабатывает вместе с MouseLeave при закрытии меню
-
MouseUp срабатывает вместе с MouseLeave при закрытии меню
Так... а что тут не так?
-
Ну если менюшка откывается на MouseUp, то порядок должен быть: Отпускается кнопка мыши > MouseUp > Меню открывается > ... > Меню закрывается
А получается: Отпускается кнопка мыши > Меню открывается > ... > Меню закрывается > MouseUp
-
если менюшка откывается на
менюшка как раз на MouseUp и показывается (перед обработчиком).
Обработчик вызывается последним, как завершающее действие. В противном случае, кнопка не будет нажатой во время показа меню