- if (!cur.mark())
- cur.clearSelection();
- needsUpdate = cursorDownParagraph(cur);
- finishChange(cur, false);
- break;
-
- case LFUN_PARAGRAPH_DOWNSEL:
- if (!cur.selection())
- cur.resetAnchor();
- cursorDownParagraph(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_SCREEN_UPSEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorPrevious(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_SCREEN_DOWNSEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorNext(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_LINE_BEGINSEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorHome(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_LINE_ENDSEL:
- update(cur);
- if (!cur.selection())
- cur.resetAnchor();
- needsUpdate = cursorEnd(cur);
- finishChange(cur, true);
- break;
-
- case LFUN_WORD_FORWARDSEL:
- if (!cur.selection())
- cur.resetAnchor();
- if (isRTL(cur.paragraph()))
- cursorLeftOneWord(cur);
- else
- cursorRightOneWord(cur);
- finishChange(cur, true);
+ case LFUN_PARAGRAPH_DOWN_SELECT:
+ needsUpdate |= cur.selHandle(cmd.action == LFUN_PARAGRAPH_DOWN_SELECT);
+ needsUpdate |= cursorDownParagraph(cur);
+ if (cur.selection())
+ saveSelection(cur);