void CCandidateWindow::_FireMessageToLightDismiss(_In_ HWND wndHandle, _In_ WINDOWPOS *pWndPos) { if (nullptr == pWndPos) { return; } BOOL isShowWnd = ((pWndPos->flags & SWP_SHOWWINDOW) != 0); BOOL isHide = ((pWndPos->flags & SWP_HIDEWINDOW) != 0); BOOL needResize = ((pWndPos->flags & SWP_NOSIZE) == 0); BOOL needMove = ((pWndPos->flags & SWP_NOMOVE) == 0); BOOL needRedraw = ((pWndPos->flags & SWP_NOREDRAW) == 0); if (isShowWnd) { NotifyWinEvent(EVENT_OBJECT_IME_SHOW, wndHandle, OBJID_CLIENT, CHILDID_SELF); } else if (isHide) { NotifyWinEvent(EVENT_OBJECT_IME_HIDE, wndHandle, OBJID_CLIENT, CHILDID_SELF); } else if (needResize || needMove || needRedraw) { if (IsWindowVisible(wndHandle)) { NotifyWinEvent(EVENT_OBJECT_IME_CHANGE, wndHandle, OBJID_CLIENT, CHILDID_SELF); } } }
STDAPI CCandidateWindow::Show(BOOL bShow) { if(!_bShow) { return E_UNEXPECTED; } if(_pCandidateWindow != nullptr) { _pCandidateWindow->Show(bShow); } #ifndef _DEBUG else { #endif if(bShow) { if(_hwnd != nullptr) { SetWindowPos(_hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW); if(_depth == 0) { NotifyWinEvent(EVENT_OBJECT_IME_SHOW, _hwnd, OBJID_CLIENT, CHILDID_SELF); } } } else { if(_hwnd != nullptr) { SetWindowPos(_hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_HIDEWINDOW); if(_depth == 0) { NotifyWinEvent(EVENT_OBJECT_IME_HIDE, _hwnd, OBJID_CLIENT, CHILDID_SELF); } } } #ifndef _DEBUG } #endif if(_pInputModeWindow != nullptr && _regmode) { #ifndef _DEBUG if(_pCandidateWindow == nullptr) { #endif _pInputModeWindow->_Show(bShow); #ifndef _DEBUG } #endif } return S_OK; }
void CCandidateWindow::_EndUIElement() { if((_hwnd == NULL) && (_depth == 0)) { ITfUIElementMgr *pUIElementMgr; if(_pTextService->_GetThreadMgr()->QueryInterface(IID_PPV_ARGS(&pUIElementMgr)) == S_OK) { pUIElementMgr->EndUIElement(_dwUIElementId); SafeRelease(&pUIElementMgr); } } if(_hwnd != NULL) { SetWindowPos(_hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_HIDEWINDOW); if(_pInputModeWindow != NULL) { _pInputModeWindow->_Show(FALSE); } if(_depth == 0) { NotifyWinEvent(EVENT_OBJECT_IME_HIDE, _hwnd, OBJID_CLIENT, CHILDID_SELF); } } _bShow = FALSE; }
void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotification notification) { if (!obj) return; Document* document = obj->document(); if (!document) return; Page* page = document->page(); if (!page || !page->chrome().platformPageClient()) return; DWORD msaaEvent; switch (notification) { case AXCheckedStateChanged: msaaEvent = EVENT_OBJECT_STATECHANGE; break; case AXFocusedUIElementChanged: case AXActiveDescendantChanged: msaaEvent = EVENT_OBJECT_FOCUS; break; case AXScrolledToAnchor: msaaEvent = EVENT_SYSTEM_SCROLLINGSTART; break; case AXLayoutComplete: msaaEvent = EVENT_OBJECT_REORDER; break; case AXLoadComplete: msaaEvent = IA2_EVENT_DOCUMENT_LOAD_COMPLETE; break; case AXValueChanged: case AXMenuListValueChanged: msaaEvent = EVENT_OBJECT_VALUECHANGE; break; case AXMenuListItemSelected: msaaEvent = EVENT_OBJECT_SELECTION; break; default: return; } // Windows will end up calling get_accChild() on the root accessible // object for the WebView, passing the child ID that we specify below. We // negate the AXID so we know that the caller is passing the ID of an // element, not the index of a child element. ASSERT(obj->axObjectID() >= 1); ASSERT(obj->axObjectID() <= numeric_limits<LONG>::max()); NotifyWinEvent(msaaEvent, page->chrome().platformPageClient(), OBJID_CLIENT, -static_cast<LONG>(obj->axObjectID())); }
void CCandidateWindow::_BeginUIElement() { BOOL bShow = TRUE; if(!_reg) { _InitList(); } _Update(); if((_hwnd == NULL) && (_depth == 0)) { ITfUIElementMgr *pUIElementMgr; if(_pTextService->_GetThreadMgr()->QueryInterface(IID_PPV_ARGS(&pUIElementMgr)) == S_OK) { pUIElementMgr->BeginUIElement(this, &bShow, &_dwUIElementId); if(!bShow) { pUIElementMgr->UpdateUIElement(_dwUIElementId); } SafeRelease(&pUIElementMgr); } } if(_hwnd == NULL) { _bShow = FALSE; } else { _bShow = bShow; } if(_bShow) { if(_hwnd != NULL) { SetWindowPos(_hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOMOVE | SWP_SHOWWINDOW); if(_reg) { if(_pInputModeWindow != NULL) { _pInputModeWindow->_Show(TRUE); } } if(_depth == 0) { NotifyWinEvent(EVENT_OBJECT_IME_SHOW, _hwnd, OBJID_CLIENT, CHILDID_SELF); } } } }
static INT_PTR CALLBACK MessageBoxProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam ) { int i, Alert; PMSGBOXINFO mbi; HELPINFO hi; HWND owner; switch(message) { case WM_INITDIALOG: mbi = (PMSGBOXINFO)lParam; SetWindowLongPtrW(hwnd, GWLP_USERDATA, (LONG_PTR)mbi); NtUserxSetMessageBox(hwnd); if(!GetPropW(hwnd, L"ROS_MSGBOX")) { SetPropW(hwnd, L"ROS_MSGBOX", (HANDLE)lParam); if (mbi->dwContextHelpId) SetWindowContextHelpId(hwnd, mbi->dwContextHelpId); if (mbi->Icon) { SendDlgItemMessageW(hwnd, MSGBOX_IDICON, STM_SETICON, (WPARAM)mbi->Icon, 0); Alert = ALERT_SYSTEM_WARNING; } else // Setup the rest of the alerts. { switch(mbi->dwStyle & MB_ICONMASK) { case MB_ICONWARNING: Alert = ALERT_SYSTEM_WARNING; break; case MB_ICONERROR: Alert = ALERT_SYSTEM_ERROR; break; case MB_ICONQUESTION: Alert = ALERT_SYSTEM_QUERY; break; default: Alert = ALERT_SYSTEM_INFORMATIONAL; /* fall through */ } } /* Send out the alert notifications. */ NotifyWinEvent(EVENT_SYSTEM_ALERT, hwnd, OBJID_ALERT, Alert); /* set control fonts */ SendDlgItemMessageW(hwnd, MSGBOX_IDTEXT, WM_SETFONT, (WPARAM)mbi->Font, 0); for(i = 0; i < mbi->nButtons; i++) { SendDlgItemMessageW(hwnd, mbi->Btns[i], WM_SETFONT, (WPARAM)mbi->Font, 0); } switch(mbi->dwStyle & MB_TYPEMASK) { case MB_ABORTRETRYIGNORE: case MB_YESNO: RemoveMenu(GetSystemMenu(hwnd, FALSE), SC_CLOSE, MF_BYCOMMAND); break; } SetFocus(GetDlgItem(hwnd, mbi->DefBtn)); if(mbi->Timeout && (mbi->Timeout != (UINT)-1)) SetTimer(hwnd, 0, mbi->Timeout, NULL); } return 0; case WM_COMMAND: switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: case IDABORT: case IDRETRY: case IDIGNORE: case IDYES: case IDNO: case IDTRYAGAIN: case IDCONTINUE: EndDialog(hwnd, wParam); return 0; case IDHELP: /* send WM_HELP message to messagebox window */ hi.cbSize = sizeof(HELPINFO); hi.iContextType = HELPINFO_WINDOW; hi.iCtrlId = LOWORD(wParam); hi.hItemHandle = (HANDLE)lParam; hi.dwContextId = 0; GetCursorPos(&hi.MousePos); SendMessageW(hwnd, WM_HELP, 0, (LPARAM)&hi); return 0; } return 0; case WM_COPY: MessageBoxTextToClipboard(hwnd); return 0; case WM_HELP: mbi = (PMSGBOXINFO)GetPropW(hwnd, L"ROS_MSGBOX"); if(!mbi) return 0; memcpy(&hi, (void *)lParam, sizeof(hi)); hi.dwContextId = GetWindowContextHelpId(hwnd); if (mbi->lpfnMsgBoxCallback) mbi->lpfnMsgBoxCallback(&hi); else { owner = GetWindow(hwnd, GW_OWNER); if(owner) SendMessageW(GetWindow(hwnd, GW_OWNER), WM_HELP, 0, (LPARAM)&hi); } return 0; case WM_CLOSE: mbi = (PMSGBOXINFO)GetPropW(hwnd, L"ROS_MSGBOX"); if(!mbi) return 0; switch(mbi->dwStyle & MB_TYPEMASK) { case MB_ABORTRETRYIGNORE: case MB_YESNO: return 1; } EndDialog(hwnd, IDCANCEL); return 1; case WM_TIMER: if(wParam == 0) { EndDialog(hwnd, 32000); } return 0; } return 0; }