From 54cb64b991b1b5033586a991e0b52be27b04aef2 Mon Sep 17 00:00:00 2001 From: Jinhao Date: Sun, 26 Mar 2017 06:25:59 +0800 Subject: [PATCH] another fix for text_editor content offset(#193) --- source/gui/widgets/skeletons/text_editor.cpp | 21 ++++++++++---------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/source/gui/widgets/skeletons/text_editor.cpp b/source/gui/widgets/skeletons/text_editor.cpp index a6c750e6..8c02b6c7 100644 --- a/source/gui/widgets/skeletons/text_editor.cpp +++ b/source/gui/widgets/skeletons/text_editor.cpp @@ -1662,23 +1662,22 @@ namespace nana{ namespace widgets impl_->capacities.behavior->pre_calc_lines(width_pixels()); - if (points_.offset.x > 0) + auto maxline = textbase().max_line(); + nana::size text_size = _m_text_extent_size(textbase().getline(maxline.first).c_str(), maxline.second); + + text_size.width += 1; + if (static_cast(text_size.width) - points_.offset.x < static_cast(this->width_pixels())) { - auto maxline = textbase().max_line(); - nana::size text_size = _m_text_extent_size(textbase().getline(maxline.first).c_str(), maxline.second); - - text_size.width += 1; - points_.offset.x = (std::max)(0, - static_cast(text_size.width + 1) - static_cast(this->width_pixels()) + static_cast(text_size.width) - static_cast(this->width_pixels()) ); } - if (points_.offset.y > 0) - { - auto const lines = impl_->capacities.behavior->take_lines(); - auto const scr_lines = this->screen_lines(); + auto const lines = impl_->capacities.behavior->take_lines(); + auto const scr_lines = this->screen_lines(); + if (static_cast(lines) - points_.offset.y < static_cast(scr_lines)) + { _m_offset_y((std::max)(static_cast(lines)-static_cast(scr_lines), 0)); }