Commit 59c35960 authored by enndeakin@sympatico.ca's avatar enndeakin@sympatico.ca
Browse files

Bug 279703, rework XUL popups to use asynchronous opening, plus many other...

Bug 279703, rework XUL popups to use asynchronous opening, plus many other fixes, attempt 2 with creating widgets later, r=bz,neil,roc,sr=bz
parent 79505c39
Loading
Loading
Loading
Loading
+13 −11
Original line number Diff line number Diff line
@@ -62,6 +62,7 @@
#include "nsIEventListenerManager.h"
#include "nsIFocusController.h"
#include "nsIFrame.h"
#include "nsIMenuFrame.h"
#include "nsIHTMLDocument.h"
#include "nsIInterfaceRequestorUtils.h"
#include "nsIMenuParent.h"
@@ -801,22 +802,23 @@ nsresult nsRootAccessible::HandleEventWithTarget(nsIDOMEvent* aEvent,
  }
  else if (eventType.EqualsLiteral("DOMMenuItemActive")) {
    if (!treeItemAccessible) {
      nsCOMPtr<nsIAccessible> containerAccessible;
      accessible->GetParent(getter_AddRefs(containerAccessible));
      NS_ENSURE_TRUE(containerAccessible, NS_OK);
      if (Role(containerAccessible) == nsIAccessibleRole::ROLE_MENUBAR) {
        nsCOMPtr<nsPIAccessNode> menuBarAccessNode(do_QueryInterface(containerAccessible));
        NS_ENSURE_TRUE(menuBarAccessNode, NS_ERROR_FAILURE);
        nsCOMPtr<nsIMenuParent> menuParent = do_QueryInterface(menuBarAccessNode->GetFrame());
        NS_ENSURE_TRUE(menuParent, NS_ERROR_FAILURE);
        PRBool isActive;
        menuParent->GetIsActive(isActive);
        if (!isActive) {
      nsCOMPtr<nsPIAccessNode> menuAccessNode = do_QueryInterface(accessible);
      NS_ENSURE_TRUE(menuAccessNode, NS_ERROR_FAILURE);
      nsIFrame* menuFrame = menuAccessNode->GetFrame();
      NS_ENSURE_TRUE(menuFrame, NS_ERROR_FAILURE);
      nsIMenuFrame* imenuFrame;
      CallQueryInterface(menuFrame, &imenuFrame);
      NS_ENSURE_TRUE(imenuFrame, NS_ERROR_FAILURE);
      if (imenuFrame->IsOnMenuBar()) {
        if (!imenuFrame->IsOnActiveMenuBar()) {
          // It is a top level menuitem. Only fire a focus event when the menu bar
          // is active.
          return NS_OK;
        }
      } else {
        nsCOMPtr<nsIAccessible> containerAccessible;
        accessible->GetParent(getter_AddRefs(containerAccessible));
        NS_ENSURE_TRUE(containerAccessible, NS_ERROR_FAILURE);
        // It is not top level menuitem
        // Only fire focus event if it is not inside collapsed popup
        if (State(containerAccessible) & nsIAccessibleStates::STATE_COLLAPSED)
+1 −1
Original line number Diff line number Diff line
@@ -107,7 +107,7 @@
      </hbox>
    </tooltip>

    <popup type="autocomplete" chromedir="&locale.dir;" id="PopupAutoComplete"/>
    <panel type="autocomplete" chromedir="&locale.dir;" id="PopupAutoComplete"/>

    <popup id="toolbar-context-menu"
           onpopupshowing="onViewToolbarsPopupShowing(event);">
+1 −0
Original line number Diff line number Diff line
@@ -3682,6 +3682,7 @@ nsDocument::GetBoxObjectFor(nsIDOMElement* aElement, nsIBoxObject** aResult)
      contractID += "-menu";
    else if (tag == nsGkAtoms::popup ||
             tag == nsGkAtoms::menupopup ||
             tag == nsGkAtoms::panel ||
             tag == nsGkAtoms::tooltip)
      contractID += "-popup";
    else if (tag == nsGkAtoms::tree)
+5 −1
Original line number Diff line number Diff line
@@ -488,7 +488,6 @@ GK_ATOM(menugenerated, "menugenerated")
GK_ATOM(menuitem, "menuitem")
GK_ATOM(menulist, "menulist")
GK_ATOM(menupopup, "menupopup")
GK_ATOM(menutobedisplayed, "menutobedisplayed")
GK_ATOM(message, "message")
GK_ATOM(meta, "meta")
GK_ATOM(method, "method")
@@ -520,6 +519,7 @@ GK_ATOM(never, "never")
GK_ATOM(_new, "new")
GK_ATOM(nextBidi, "NextBidi")
GK_ATOM(no, "no")
GK_ATOM(noautohide, "noautohide")
GK_ATOM(nobr, "nobr")
GK_ATOM(node, "node")
GK_ATOM(nodeSet, "node-set")
@@ -634,6 +634,7 @@ GK_ATOM(pageincrement, "pageincrement")
GK_ATOM(pagex, "pagex")
GK_ATOM(pagey, "pagey")
GK_ATOM(palettename, "palettename")
GK_ATOM(panel, "panel")
GK_ATOM(param, "param")
GK_ATOM(parameter, "parameter")
GK_ATOM(parent, "parent")
@@ -1391,12 +1392,15 @@ GK_ATOM(legendFrame, "LegendFrame")
GK_ATOM(letterFrame, "LetterFrame")
GK_ATOM(lineFrame, "LineFrame")
GK_ATOM(listControlFrame,"ListControlFrame")
GK_ATOM(menuBarFrame,"MenuBarFrame")
GK_ATOM(menuFrame,"MenuFrame")
GK_ATOM(menuPopupFrame,"MenuPopupFrame")
GK_ATOM(objectFrame, "ObjectFrame")
GK_ATOM(pageFrame, "PageFrame")
GK_ATOM(pageBreakFrame, "PageBreakFrame")
GK_ATOM(pageContentFrame, "PageContentFrame")
GK_ATOM(placeholderFrame, "PlaceholderFrame")
GK_ATOM(popupSetFrame, "PopupSetFrame")
GK_ATOM(positionedInlineFrame, "PositionedInlineFrame")
GK_ATOM(canvasFrame, "CanvasFrame")
GK_ATOM(rootFrame, "RootFrame")
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@ VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk

MODULE		= xul
DIRS		= public src test
DIRS		= src test

include $(topsrcdir)/config/rules.mk
Loading