From 96ebc1d602e35ec14d1cf269415b4cbfce7ba06b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sun, 12 Oct 2014 23:41:27 +0200 Subject: [PATCH] HaikuDepot: React to B_SELECT_ALL in custom text view --- .../haikudepot/textview/TextDocumentView.cpp | 17 ++++++++++++++++- src/apps/haikudepot/textview/TextDocumentView.h | 1 + src/apps/haikudepot/textview/TextEditor.cpp | 10 ++++++++++ src/apps/haikudepot/textview/TextEditor.h | 1 + 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/apps/haikudepot/textview/TextDocumentView.cpp b/src/apps/haikudepot/textview/TextDocumentView.cpp index d4005e808c..5d20705029 100644 --- a/src/apps/haikudepot/textview/TextDocumentView.cpp +++ b/src/apps/haikudepot/textview/TextDocumentView.cpp @@ -52,6 +52,9 @@ TextDocumentView::MessageReceived(BMessage* message) case B_COPY: Copy(be_clipboard); break; + case B_SELECT_ALL: + SelectAll(); + break; default: BView::MessageReceived(message); @@ -334,6 +337,18 @@ TextDocumentView::SetCaret(BPoint location, bool extendSelection) } +void +TextDocumentView::SelectAll() +{ + if (fTextEditor.Get() == NULL) + return; + + fTextEditor->SelectAll(); + fShowCaret = false; + Invalidate(); +} + + bool TextDocumentView::HasSelection() const { @@ -344,7 +359,7 @@ TextDocumentView::HasSelection() const void TextDocumentView::GetSelection(int32& start, int32& end) const { - if (fTextEditor.Get()) { + if (fTextEditor.Get() != NULL) { start = fTextEditor->SelectionStart(); end = fTextEditor->SelectionEnd(); } diff --git a/src/apps/haikudepot/textview/TextDocumentView.h b/src/apps/haikudepot/textview/TextDocumentView.h index 65ef4c4cf3..1a612b42f4 100644 --- a/src/apps/haikudepot/textview/TextDocumentView.h +++ b/src/apps/haikudepot/textview/TextDocumentView.h @@ -63,6 +63,7 @@ public: void SetCaret(BPoint where, bool extendSelection); + void SelectAll(); bool HasSelection() const; void GetSelection(int32& start, int32& end) const; diff --git a/src/apps/haikudepot/textview/TextEditor.cpp b/src/apps/haikudepot/textview/TextEditor.cpp index 4c665b6e58..865db3edf7 100644 --- a/src/apps/haikudepot/textview/TextEditor.cpp +++ b/src/apps/haikudepot/textview/TextEditor.cpp @@ -119,6 +119,16 @@ TextEditor::SetCaret(BPoint location, bool extendSelection) } +void +TextEditor::SelectAll() +{ + if (fDocument.Get() == NULL) + return; + + SetSelection(TextSelection(0, fDocument->Length())); +} + + void TextEditor::SetSelection(TextSelection selection) { diff --git a/src/apps/haikudepot/textview/TextEditor.h b/src/apps/haikudepot/textview/TextEditor.h index 12c236c475..842654b970 100644 --- a/src/apps/haikudepot/textview/TextEditor.h +++ b/src/apps/haikudepot/textview/TextEditor.h @@ -48,6 +48,7 @@ public: { return fEditingEnabled; } void SetCaret(BPoint location, bool extendSelection); + void SelectAll(); void SetSelection(TextSelection selection); inline TextSelection Selection() const { return fSelection; }