MPC-BE forum

MPC-BE => Баг Репорт / The bug report => Тема начата: judelaw от 20 марта 2018, 13:40:19

Название: Перенаправление хоткеев в главное окно с активного плейлиста
Отправлено: judelaw от 20 марта 2018, 13:40:19
дополнение к 3469 (Изменение : Теперь при активном плейлисте "отрабатываются" горячие клавиши основного окна. )
Пока не все отрабатываются. С Alt не отрабатываются и ctrl+enter shft+enter тоже нет

примерный патч (из замеченных проблем - вызов главного меню по Alt)
Index: src/apps/mplayerc/PlayerPlaylistBar.cpp
===================================================================
--- src/apps/mplayerc/PlayerPlaylistBar.cpp    (revision 3479)
+++ src/apps/mplayerc/PlayerPlaylistBar.cpp    (working copy)
@@ -780,6 +780,10 @@
 BOOL CPlayerPlaylistBar::PreTranslateMessage(MSG* pMsg)
 {
     if (IsWindow(pMsg->hwnd) && IsVisible() && pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST) {
+        if (pMsg->message == WM_SYSKEYDOWN || pMsg->message == WM_SYSKEYUP) { // Alt + anykey
+            GetParentFrame()->PreTranslateMessage(pMsg);
+            return TRUE;
+        }
         if (pMsg->message == WM_KEYDOWN) {
             switch (pMsg->wParam) {
             case VK_ESCAPE:
@@ -786,6 +790,10 @@
                 GetParentFrame()->ShowControlBar(this, FALSE, TRUE);
                 return TRUE;
             case VK_RETURN:
+                if (GetKeyState(VK_CONTROL) < 0 || GetKeyState(VK_SHIFT) < 0) { // Ctrl+Enter или Shft+Enter
+                    GetParentFrame()->PreTranslateMessage(pMsg);
+                    return TRUE;
+                }
                 if (m_list.GetSelectedCount() == 1) {
                     const int item = m_list.GetNextItem(-1, LVNI_SELECTED);
 
Название: Перенаправление хоткеев в главное окно с активного плейлиста
Отправлено: Aleksoid1978 от 20 марта 2018, 14:04:51
Да и не надо все. Хватит того что есть. Ну нафига там нажатие Alt ...
Название: Перенаправление хоткеев в главное окно с активного плейлиста
Отправлено: judelaw от 20 марта 2018, 14:39:56
по-умолчанию в плеере назначено около двух десятков хоткеев с Alt

все они не работают с плейлиста
Название: Перенаправление хоткеев в главное окно с активного плейлиста
Отправлено: Aleksoid1978 от 20 марта 2018, 15:49:45
Я тебе в личку написал - прочитай и ответь.
Название: Перенаправление хоткеев в главное окно с активного плейлиста
Отправлено: V0lt от 20 марта 2018, 18:18:28
Согласен, про то что все не надо. Желательно только актуальные команды, которые не ломают работу плейлиста.
Название: Перенаправление хоткеев в главное окно с активного плейлиста
Отправлено: judelaw от 21 марта 2018, 13:30:47
при активном плейлисте вообще все команды перехватываются и ненужные для плейлиста должны передаваться на обработку в главное окно. И только нужные для плейлиста не транслироваться в главное.

Принцип тут такой: не моё - передаю дальше.
А сейчас при активном плейлисте куча команд для главного окна по горячим клавишам не работает.
Alt+I, Alt+ENter?, Alt+1/2/3/4 и тп не работают. Нужно сначала фокус на главное окно сменить, только тогда.
[merge_posts_bbcode]Добавлено: 2018-03-21 13:30:47[/merge_posts_bbcode]

так что решаем?
пока не трогаем?

если плейлист активен (фокус на нем), то все что мы нажали идет сюда: CPlayerPlaylistBar::PreTranslateMessage(MSG* pMsg)

тут мы отслеживаем что нажато, и если нажаты:
Esc, Del, Ctrl+A, Ctrl+I - выполняем определенные команды

если нажаты:
VK_UP
VK_DOWN:
VK_HOME:
VK_END:
VK_PRIOR:
VK_NEXT:
VK_DELETE:

передаем классу родителю
return CSizingControlBarG::PreTranslateMessage(pMsg);

ну а все остальные команды я считаю нужно передавать главному окну
m_pMainFrame->PreTranslateMessage(pMsg);

или я чего недопонимаю?
Название: Перенаправление хоткеев в главное окно с активного плейлиста
Отправлено: Aleksoid1978 от 22 марта 2018, 06:52:01
Ну давай уже добавляй. Выстрелит если что(не будет работать что-то в плейлисте) - частично откатим/переделаем.