[EXPLORER] - If Start Menu is open, WIN key hides it

svn path=/trunk/; revision=54113
This commit is contained in:
Rafal Harabien 2011-10-13 15:50:24 +00:00
parent 143732711e
commit eaf2462310
4 changed files with 16 additions and 6 deletions

View file

@ -306,7 +306,7 @@ LRESULT DesktopBar::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
else
return 0; // disable any other resizing
} else if (wparam == SC_TASKLIST)
ShowStartMenu();
ShowOrHideStartMenu();
goto def;
case WM_SIZE:
@ -430,7 +430,7 @@ int DesktopBar::Command(int id, int code)
{
switch(id) {
case IDC_START:
ShowStartMenu();
ShowOrHideStartMenu();
break;
case ID_ABOUT_EXPLORER:
@ -484,7 +484,7 @@ int DesktopBar::Command(int id, int code)
}
void DesktopBar::ShowStartMenu()
void DesktopBar::ShowOrHideStartMenu()
{
if (_startMenuRoot)
{
@ -492,7 +492,10 @@ void DesktopBar::ShowStartMenu()
if (!Button_GetState(_hwndStartButton))
Button_SetState(_hwndStartButton, TRUE);
_startMenuRoot->TrackStartmenu();
if (_startMenuRoot->IsStartMenuVisible())
_startMenuRoot->CloseStartMenu();
else
_startMenuRoot->TrackStartmenu();
// StartMenu was closed, release button state
Button_SetState(_hwndStartButton, false);

View file

@ -103,7 +103,7 @@ protected:
void ControlResize(WPARAM wparam, LPARAM lparam);
void RegisterHotkeys();
void ProcessHotKey(int id_hotkey);
void ShowStartMenu();
void ShowOrHideStartMenu();
LRESULT ProcessCopyData(COPYDATASTRUCT* pcd);
WindowHandle _hwndTaskBar;

View file

@ -1872,6 +1872,11 @@ void StartMenuRoot::CloseStartMenu(int id)
ShowWindow(_hwnd, SW_HIDE);
}
bool StartMenuRoot::IsStartMenuVisible() const
{
return IsWindowVisible(_hwnd);
}
void StartMenuRoot::ProcessKey(int vk)
{
switch(vk) {

View file

@ -369,6 +369,8 @@ struct StartMenuRoot : public StartMenuHandler
static HWND Create(HWND hwndDesktopBar, int icon_size);
void TrackStartmenu();
void CloseStartMenu(int id=0);
bool IsStartMenuVisible() const;
int Command(int id, int code);
HWND _hwndStartButton;
@ -383,7 +385,7 @@ protected:
virtual void ProcessKey(int vk);
void Paint(PaintCanvas& canvas);
void CloseStartMenu(int id=0);
void ReadLogoSize();
UINT GetLogoResId();