summaryrefslogtreecommitdiff
path: root/src/Fl_Text_Editor.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Text_Editor.cxx')
-rw-r--r--src/Fl_Text_Editor.cxx17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/Fl_Text_Editor.cxx b/src/Fl_Text_Editor.cxx
index d13fd7139..b580951ae 100644
--- a/src/Fl_Text_Editor.cxx
+++ b/src/Fl_Text_Editor.cxx
@@ -524,6 +524,16 @@ int Fl_Text_Editor::handle_key() {
if (insert_mode()) insert(Fl::event_text());
else overstrike(Fl::event_text());
}
+#ifdef __APPLE__
+ if (Fl::marked_text_length()) {
+ int x, y;
+ int pos = this->insert_position();
+ this->buffer()->select(pos - Fl::marked_text_length(), pos);
+ this->position_to_xy( this->insert_position(), &x, &y);
+ y += this->textsize();
+ Fl::insertion_point_location(x, y);
+ }
+#endif
show_insert_position();
set_changed();
if (when()&FL_WHEN_CHANGED) do_callback();
@@ -561,6 +571,13 @@ int Fl_Text_Editor::handle(int event) {
case FL_UNFOCUS:
show_cursor(mCursorOn); // redraws the cursor
+#ifdef __APPLE__
+ if (buffer()->selected() && Fl::marked_text_length()) {
+ int pos = insert_position();
+ buffer()->select(pos, pos);
+ Fl::reset_marked_text();
+ }
+#endif
if (buffer()->selected()) redraw(); // Redraw selections...
case FL_HIDE:
if (when() & FL_WHEN_RELEASE) maybe_do_callback();