зеркало из https://github.com/mozilla/gecko-dev.git
Bug 374471 Make the noautohide attribute live where supported r=enndeakin
This commit is contained in:
Родитель
d3cec93f2b
Коммит
50eb2af64f
|
@ -2101,6 +2101,14 @@ nsMenuPopupFrame::AttributeChanged(int32_t aNameSpaceID,
|
||||||
if (aAttribute == nsGkAtoms::left || aAttribute == nsGkAtoms::top)
|
if (aAttribute == nsGkAtoms::left || aAttribute == nsGkAtoms::top)
|
||||||
MoveToAttributePosition();
|
MoveToAttributePosition();
|
||||||
|
|
||||||
|
#ifndef MOZ_GTK2
|
||||||
|
if (aAttribute == nsGkAtoms::noautohide) {
|
||||||
|
nsXULPopupManager* pm = nsXULPopupManager::GetInstance();
|
||||||
|
if (pm)
|
||||||
|
pm->EnableRollup(mContent, !IsNoAutoHide());
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (aAttribute == nsGkAtoms::label) {
|
if (aAttribute == nsGkAtoms::label) {
|
||||||
// set the label for the titlebar
|
// set the label for the titlebar
|
||||||
nsView* view = GetView();
|
nsView* view = GetView();
|
||||||
|
|
|
@ -1236,6 +1236,41 @@ nsXULPopupManager::HidePopupsInList(const nsTArray<nsMenuPopupFrame *> &aFrames)
|
||||||
SetCaptureState(nullptr);
|
SetCaptureState(nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
nsXULPopupManager::EnableRollup(nsIContent* aPopup, bool aShouldRollup)
|
||||||
|
{
|
||||||
|
#ifndef MOZ_GTK
|
||||||
|
if (aShouldRollup) {
|
||||||
|
nsMenuChainItem* item = mNoHidePanels;
|
||||||
|
while (item) {
|
||||||
|
if (item->Content() == aPopup) {
|
||||||
|
item->Detach(&mNoHidePanels);
|
||||||
|
nsIContent* oldmenu = nullptr;
|
||||||
|
if (mPopups)
|
||||||
|
oldmenu = mPopups->Content();
|
||||||
|
item->SetParent(mPopups);
|
||||||
|
mPopups = item;
|
||||||
|
SetCaptureState(oldmenu);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
item = item->GetParent();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
nsMenuChainItem* item = mPopups;
|
||||||
|
while (item) {
|
||||||
|
if (item->Content() == aPopup) {
|
||||||
|
item->Detach(&mPopups);
|
||||||
|
item->SetParent(mNoHidePanels);
|
||||||
|
mNoHidePanels = item;
|
||||||
|
SetCaptureState(nullptr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
item = item->GetParent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
nsXULPopupManager::IsChildOfDocShell(nsIDocument* aDoc, nsIDocShellTreeItem* aExpected)
|
nsXULPopupManager::IsChildOfDocShell(nsIDocument* aDoc, nsIDocShellTreeItem* aExpected)
|
||||||
{
|
{
|
||||||
|
|
|
@ -484,6 +484,14 @@ public:
|
||||||
*/
|
*/
|
||||||
void HidePopupsInDocShell(nsIDocShellTreeItem* aDocShellToHide);
|
void HidePopupsInDocShell(nsIDocShellTreeItem* aDocShellToHide);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable or disable the dynamic noautohide state of a panel.
|
||||||
|
*
|
||||||
|
* aPanel - the panel whose state is to change
|
||||||
|
* aShouldRollup - whether the panel is no longer noautohide
|
||||||
|
*/
|
||||||
|
void EnableRollup(nsIContent* aPopup, bool aShouldRollup);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute a menu command from the triggering event aEvent.
|
* Execute a menu command from the triggering event aEvent.
|
||||||
*
|
*
|
||||||
|
|
Загрузка…
Ссылка в новой задаче