- case LFUN_UP_PARAGRAPH:
- if (!cur.mark())
- cur.clearSelection();
- needsUpdate = cursorUpParagraph(cur);
- finishChange(cur, false);
- break;
-
- case LFUN_UP_PARAGRAPHSEL:
- if (!cur.selection())
- cur.resetAnchor();
- cursorUpParagraph(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_DOWN_PARAGRAPH:
- if (!cur.mark())
- cur.clearSelection();
- needsUpdate = cursorDownParagraph(cur);
- finishChange(cur, false);
- break;
-
- case LFUN_DOWN_PARAGRAPHSEL:
- if (!cur.selection())
- cur.resetAnchor();
- cursorDownParagraph(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_PRIORSEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorPrevious(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_NEXTSEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorNext(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_HOMESEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorHome(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_ENDSEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorEnd(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_WORDRIGHTSEL:
- if (!cur.selection())
- cur.resetAnchor();
- if (isRTL(cur.paragraph()))
- cursorLeftOneWord(cur);
- else
- cursorRightOneWord(cur);
- finishChange(cur, true);
+ case LFUN_PARAGRAPH_UP:
+ case LFUN_PARAGRAPH_UP_SELECT:
+ needsUpdate |= cur.selHandle(cmd.action == LFUN_PARAGRAPH_UP_SELECT);
+ needsUpdate |= cursorUpParagraph(cur);