FLTK logo

[master] 95d862f - Fix IME problem (issue #270)

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.commit  ]
 
Previous Message ]Next Message ]

[master] 95d862f - Fix IME problem (issue #270) "YX" Dec 12, 2021  
 
commit 95d862fd5afc5e62504c45c213672ad04f3d9928
Author:     YX <yxxinyuan@zju.edu.cn>
AuthorDate: Sun Oct 10 17:04:51 2021 +0800
Commit:     ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Sun Dec 12 17:01:30 2021 +0100

    Fix IME problem (issue #270)

 src/Fl_Input_.cxx       | 4 +++-
 src/Fl_Text_Display.cxx | 5 +++++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git src/Fl_Input_.cxx src/Fl_Input_.cxx
index b3dde0f..75bd51c 100644
--- src/Fl_Input_.cxx
+++ src/Fl_Input_.cxx
@@ -285,6 +285,7 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) {
   int desc = height-fl_descent();
   float xpos = (float)(X - xscroll_ + 1);
   int ypos = -yscroll_;
+  int ypos_cur = 0; //fix issue #270
   for (; ypos < H;) {
 
     // re-expand line unless it is the last one calculated above:
@@ -377,6 +378,7 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) {
         fl_rectf((int)(xpos+curx+0.5), Y+ypos, 2, height);
       }
       Fl::insertion_point_location((int)xpos+curx, Y+ypos+height, height);
+      ypos_cur = ypos+height; //fix issue #270
     }
 
   CONTINUE:
@@ -399,7 +401,7 @@ void Fl_Input_::drawtext(int X, int Y, int W, int H) {
   fl_pop_clip();
   if (Fl::focus() == this) {
        fl_set_spot(textfont(), textsize(),
-               (int)xpos+curx, Y+ypos-fl_descent(), W, H, window());
+               (int)xpos+curx, Y+ypos_cur-fl_descent(), W, H, window()); //fix issue #270
   }
 }
 
diff --git src/Fl_Text_Display.cxx src/Fl_Text_Display.cxx
index 731d7a9..ac8a291 100644
--- src/Fl_Text_Display.cxx
+++ src/Fl_Text_Display.cxx
@@ -2464,6 +2464,11 @@ void Fl_Text_Display::draw_cursor( int X, int Y ) {
   for ( int k = 0; k < nSegs; k++ ) {
     fl_line( segs[ k ].x1, segs[ k ].y1, segs[ k ].x2, segs[ k ].y2 );
   }
+
+  //fix issue #270
+  if (Fl::focus() == this) {
+       fl_set_spot(textfont(), textsize(), X, bot, text_area.w, text_area.h, window());
+  }
 }
 
 
Direct Link to Message ]
 
     
Previous Message ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.