дополнение к 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);
Да и не надо все. Хватит того что есть. Ну нафига там нажатие Alt ...
по-умолчанию в плеере назначено около двух десятков хоткеев с Alt
все они не работают с плейлиста
Я тебе в личку написал - прочитай и ответь.
Согласен, про то что все не надо. Желательно только актуальные команды, которые не ломают работу плейлиста.
при активном плейлисте вообще все команды перехватываются и ненужные для плейлиста должны передаваться на обработку в главное окно. И только нужные для плейлиста не транслироваться в главное.
Принцип тут такой: не моё - передаю дальше.
А сейчас при активном плейлисте куча команд для главного окна по горячим клавишам не работает.
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);
или я чего недопонимаю?
Ну давай уже добавляй. Выстрелит если что(не будет работать что-то в плейлисте) - частично откатим/переделаем.