diff options
| -rw-r--r-- | src/macterm.c | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/src/macterm.c b/src/macterm.c index fc65c4dab69..69c1840149c 100644 --- a/src/macterm.c +++ b/src/macterm.c | |||
| @@ -1143,6 +1143,9 @@ x_update_window_end (w, cursor_on_p, mouse_face_overwritten_p) | |||
| 1143 | output_cursor.x, output_cursor.y); | 1143 | output_cursor.x, output_cursor.y); |
| 1144 | 1144 | ||
| 1145 | x_draw_vertical_border (w); | 1145 | x_draw_vertical_border (w); |
| 1146 | |||
| 1147 | draw_window_fringes (w); | ||
| 1148 | |||
| 1146 | UNBLOCK_INPUT; | 1149 | UNBLOCK_INPUT; |
| 1147 | } | 1150 | } |
| 1148 | 1151 | ||
| @@ -1239,11 +1242,7 @@ x_after_update_window_line (desired_row) | |||
| 1239 | xassert (w); | 1242 | xassert (w); |
| 1240 | 1243 | ||
| 1241 | if (!desired_row->mode_line_p && !w->pseudo_window_p) | 1244 | if (!desired_row->mode_line_p && !w->pseudo_window_p) |
| 1242 | { | 1245 | desired_row->redraw_fringe_bitmaps_p = 1; |
| 1243 | BLOCK_INPUT; | ||
| 1244 | draw_row_fringe_bitmaps (w, desired_row); | ||
| 1245 | UNBLOCK_INPUT; | ||
| 1246 | } | ||
| 1247 | 1246 | ||
| 1248 | /* When a window has disappeared, make sure that no rest of | 1247 | /* When a window has disappeared, make sure that no rest of |
| 1249 | full-width rows stays visible in the internal border. Could | 1248 | full-width rows stays visible in the internal border. Could |
| @@ -1295,9 +1294,24 @@ x_draw_fringe_bitmap (w, row, p) | |||
| 1295 | XGCValues gcv; | 1294 | XGCValues gcv; |
| 1296 | GC gc = f->output_data.mac->normal_gc; | 1295 | GC gc = f->output_data.mac->normal_gc; |
| 1297 | struct face *face = p->face; | 1296 | struct face *face = p->face; |
| 1297 | int rowY; | ||
| 1298 | 1298 | ||
| 1299 | /* Must clip because of partially visible lines. */ | 1299 | /* Must clip because of partially visible lines. */ |
| 1300 | x_clip_to_row (w, row, gc); | 1300 | rowY = WINDOW_TO_FRAME_PIXEL_Y (w, row->y); |
| 1301 | if (p->y < rowY) | ||
| 1302 | { | ||
| 1303 | /* Adjust position of "bottom aligned" bitmap on partially | ||
| 1304 | visible last row. */ | ||
| 1305 | int oldY = row->y; | ||
| 1306 | int oldVH = row->visible_height; | ||
| 1307 | row->visible_height = p->h; | ||
| 1308 | row->y -= rowY - p->y; | ||
| 1309 | x_clip_to_row (w, row, gc); | ||
| 1310 | row->y = oldY; | ||
| 1311 | row->visible_height = oldVH; | ||
| 1312 | } | ||
| 1313 | else | ||
| 1314 | x_clip_to_row (w, row, gc); | ||
| 1301 | 1315 | ||
| 1302 | if (p->bx >= 0) | 1316 | if (p->bx >= 0) |
| 1303 | { | 1317 | { |
| @@ -4546,6 +4560,14 @@ mac_draw_window_cursor (w, glyph_row, x, y, cursor_type, cursor_width, on_p, act | |||
| 4546 | w->phys_cursor_width = cursor_width; | 4560 | w->phys_cursor_width = cursor_width; |
| 4547 | w->phys_cursor_on_p = 1; | 4561 | w->phys_cursor_on_p = 1; |
| 4548 | 4562 | ||
| 4563 | if (glyph_row->exact_window_width_line_p | ||
| 4564 | && w->phys_cursor.hpos >= glyph_row->used[TEXT_AREA]) | ||
| 4565 | { | ||
| 4566 | glyph_row->cursor_in_fringe_p = 1; | ||
| 4567 | draw_fringe_bitmap (w, glyph_row, 0); | ||
| 4568 | return; | ||
| 4569 | } | ||
| 4570 | |||
| 4549 | switch (cursor_type) | 4571 | switch (cursor_type) |
| 4550 | { | 4572 | { |
| 4551 | case HOLLOW_BOX_CURSOR: | 4573 | case HOLLOW_BOX_CURSOR: |