Fix double unfocus during NS cursor display
* src/nsterm.m (ns_draw_window_cursor): Unfocus around calls to draw_phys_cursor_glyph, then focus again later. (bug#56559)
This commit is contained in:
parent
c96a6a0c9f
commit
c829e63b0a
1 changed files with 10 additions and 1 deletions
11
src/nsterm.m
11
src/nsterm.m
|
@ -3103,16 +3103,25 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors.
|
|||
case NO_CURSOR:
|
||||
break;
|
||||
case FILLED_BOX_CURSOR:
|
||||
/* The call to draw_phys_cursor_glyph can end up undoing the
|
||||
ns_focus, so unfocus here and regain focus later. */
|
||||
[ctx restoreGraphicsState];
|
||||
ns_unfocus (f);
|
||||
draw_phys_cursor_glyph (w, glyph_row, DRAW_CURSOR);
|
||||
ns_focus (f, &r, 1);
|
||||
break;
|
||||
case HOLLOW_BOX_CURSOR:
|
||||
[ctx restoreGraphicsState];
|
||||
ns_unfocus (f);
|
||||
draw_phys_cursor_glyph (w, glyph_row, DRAW_NORMAL_TEXT);
|
||||
ns_focus (f, &r, 1);
|
||||
|
||||
/* This works like it does in PostScript, not X Windows. */
|
||||
[NSBezierPath strokeRect: NSInsetRect (r, 0.5, 0.5)];
|
||||
break;
|
||||
case HBAR_CURSOR:
|
||||
NSRectFill (r);
|
||||
[ctx restoreGraphicsState];
|
||||
break;
|
||||
case BAR_CURSOR:
|
||||
s = r;
|
||||
|
@ -3123,10 +3132,10 @@ Note that CURSOR_WIDTH is meaningful only for (h)bar cursors.
|
|||
s.origin.x += cursor_glyph->pixel_width - s.size.width;
|
||||
|
||||
NSRectFill (s);
|
||||
[ctx restoreGraphicsState];
|
||||
break;
|
||||
}
|
||||
|
||||
[ctx restoreGraphicsState];
|
||||
ns_unfocus (f);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue