// // IsEditor // // Determine if the document we're working with is Editor or Browser // PRBool nsXBLWindowKeyHandler::IsEditor() { nsCOMPtr<nsPIWindowRoot> windowRoot(do_QueryInterface(mTarget)); NS_ENSURE_TRUE(windowRoot, PR_FALSE); nsCOMPtr<nsIFocusController> focusController; windowRoot->GetFocusController(getter_AddRefs(focusController)); if (!focusController) { NS_WARNING("********* Something went wrong! No focus controller on the root!!!\n"); return PR_FALSE; } nsCOMPtr<nsIDOMWindowInternal> focusedWindow; focusController->GetFocusedWindow(getter_AddRefs(focusedWindow)); if (!focusedWindow) return PR_FALSE; nsCOMPtr<nsPIDOMWindow> piwin(do_QueryInterface(focusedWindow)); nsIDocShell *docShell = piwin->GetDocShell(); nsCOMPtr<nsIPresShell> presShell; if (docShell) docShell->GetPresShell(getter_AddRefs(presShell)); if (presShell) { PRInt16 isEditor; presShell->GetSelectionFlags(&isEditor); return isEditor == nsISelectionDisplay::DISPLAY_ALL; } return PR_FALSE; }
// // IsEditor // // Determine if the document we're working with is Editor or Browser // PRBool nsXBLWindowKeyHandler::IsEditor() { // XXXndeakin even though this is only used for key events which should be // going to the focused frame anyway, this doesn't seem like the right way // to determine if something is an editor. nsIFocusManager* fm = nsFocusManager::GetFocusManager(); if (!fm) return PR_FALSE; nsCOMPtr<nsIDOMWindow> focusedWindow; fm->GetFocusedWindow(getter_AddRefs(focusedWindow)); if (!focusedWindow) return PR_FALSE; nsCOMPtr<nsPIDOMWindow> piwin(do_QueryInterface(focusedWindow)); nsIDocShell *docShell = piwin->GetDocShell(); nsCOMPtr<nsIPresShell> presShell; if (docShell) docShell->GetPresShell(getter_AddRefs(presShell)); if (presShell) { return presShell->GetSelectionFlags() == nsISelectionDisplay::DISPLAY_ALL; } return PR_FALSE; }