* Redesigned large portions of the focus manager. All the mouse interactions seem to work now
CORE-7586.

svn path=/branches/shell-experiments/; revision=62567
This commit is contained in:
David Quintana 2014-03-26 11:33:52 +00:00
parent d2b33acd15
commit 8676a39ebc
7 changed files with 404 additions and 278 deletions

View file

@ -133,7 +133,7 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::QueryService(REFGUID guidService, REFIID
{
return this->QueryInterface(riid, ppvObject);
}
if (IsEqualGUID(guidService, SID_SMenuBandBottom) ||
IsEqualGUID(guidService, SID_SMenuBandBottomSelected) ||
IsEqualGUID(guidService, SID_SMenuBandChild))
@ -299,7 +299,7 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::Popup(POINTL *ppt, RECTL *prcExclude, MP
::GetObject(m_Banner, sizeof(bm), &bm);
rc.right += bm.bmWidth;
}
int x, y, cx, cy;
RECT rcWorkArea;
@ -350,7 +350,7 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::Popup(POINTL *ppt, RECTL *prcExclude, MP
{
cy = waHeight;
}
if (y + cy > rcWorkArea.bottom)
{
y = rcWorkArea.bottom - cy;
@ -438,23 +438,23 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::SetSubMenu(IMenuPopup *pmp, BOOL fSet)
HRESULT STDMETHODCALLTYPE CMenuDeskBar::OnSelect(DWORD dwSelectType)
{
/* As far as I can tell, the submenu hierarchy looks like this:
The DeskBar's Child is the Band it contains.
The DeskBar's Parent is the SID_SMenuPopup of the Site.
The Band's Child is the IMenuPopup of the child submenu.
The Band's Parent is the SID_SMenuPopup of the Site (the DeskBar).
When the DeskBar receives a selection event:
If it requires closing the window, it will notify the Child (Band) using CancelLevel.
If it has to spread upwards (everything but CancelLevel), it will notify the Parent.
When the Band receives a selection event, this is where it gets fuzzy:
In which cases does it call the Parent? Probably not CancelLevel.
In which cases does it call the Child?
How does it react to calls?
*/
*
* The DeskBar's Child is the Band it contains.
* The DeskBar's Parent is the SID_SMenuPopup of the Site.
*
* The Band's Child is the IMenuPopup of the child submenu.
* The Band's Parent is the SID_SMenuPopup of the Site (the DeskBar).
*
* When the DeskBar receives a selection event:
* If it requires closing the window, it will notify the Child (Band) using CancelLevel.
* If it has to spread upwards (everything but CancelLevel), it will notify the Parent.
*
* When the Band receives a selection event, this is where it gets fuzzy:
* In which cases does it call the Parent? Probably not CancelLevel.
* In which cases does it call the Child?
* How does it react to calls?
*
*/
switch (dwSelectType)
{