void ME_SendRequestResize(ME_TextEditor *editor, BOOL force) { if (editor->nEventMask & ENM_REQUESTRESIZE) { RECT rc; ITextHost_TxGetClientRect(editor->texthost, &rc); if (force || rc.bottom != editor->nTotalLength) { REQRESIZE info; info.nmhdr.hwndFrom = NULL; info.nmhdr.idFrom = 0; info.nmhdr.code = EN_REQUESTRESIZE; info.rc = rc; info.rc.right = editor->nTotalWidth; info.rc.bottom = editor->nTotalLength; editor->nEventMask &= ~ENM_REQUESTRESIZE; ITextHost_TxNotify(editor->texthost, info.nmhdr.code, &info); editor->nEventMask |= ENM_REQUESTRESIZE; } } }
void ME_SendSelChange(ME_TextEditor *editor) { SELCHANGE sc; if (!(editor->nEventMask & ENM_SELCHANGE)) return; sc.nmhdr.hwndFrom = NULL; sc.nmhdr.idFrom = 0; sc.nmhdr.code = EN_SELCHANGE; ME_GetSelectionOfs(editor, &sc.chrg.cpMin, &sc.chrg.cpMax); sc.seltyp = SEL_EMPTY; if (sc.chrg.cpMin != sc.chrg.cpMax) sc.seltyp |= SEL_TEXT; if (sc.chrg.cpMin < sc.chrg.cpMax+1) /* what were RICHEDIT authors thinking ? */ sc.seltyp |= SEL_MULTICHAR; TRACE("cpMin=%d cpMax=%d seltyp=%d (%s %s)\n", sc.chrg.cpMin, sc.chrg.cpMax, sc.seltyp, (sc.seltyp & SEL_TEXT) ? "SEL_TEXT" : "", (sc.seltyp & SEL_MULTICHAR) ? "SEL_MULTICHAR" : ""); if (sc.chrg.cpMin != editor->notified_cr.cpMin || sc.chrg.cpMax != editor->notified_cr.cpMax) { ME_ClearTempStyle(editor); editor->notified_cr = sc.chrg; ITextHost_TxNotify(editor->texthost, sc.nmhdr.code, &sc); } }