mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Sync OpenBSD patchset 1055:
Revert screen-write.c r1.54 and fix the bug properly. After wrapping a line in a pane, the cursor needs to move to the next line unless it scrolled.
This commit is contained in:
		@@ -1071,8 +1071,11 @@ screen_write_cell(struct screen_write_ctx *ctx,
 | 
				
			|||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Initialise the redraw context, saving the last cell. */
 | 
				
			||||||
 | 
						screen_write_initctx(ctx, &ttyctx, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* If in insert mode, make space for the cells. */
 | 
						/* If in insert mode, make space for the cells. */
 | 
				
			||||||
	if (s->mode & MODE_INSERT && s->cx <= screen_size_x(s) - width) {
 | 
						if ((s->mode & MODE_INSERT) && s->cx <= screen_size_x(s) - width) {
 | 
				
			||||||
		xx = screen_size_x(s) - s->cx - width;
 | 
							xx = screen_size_x(s) - s->cx - width;
 | 
				
			||||||
		grid_move_cells(s->grid, s->cx + width, s->cx, s->cy, xx);
 | 
							grid_move_cells(s->grid, s->cx + width, s->cx, s->cy, xx);
 | 
				
			||||||
		insert = 1;
 | 
							insert = 1;
 | 
				
			||||||
@@ -1084,9 +1087,6 @@ screen_write_cell(struct screen_write_ctx *ctx,
 | 
				
			|||||||
		s->cx = 0;	/* carriage return */
 | 
							s->cx = 0;	/* carriage return */
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Initialise the redraw context, saving the last cell. */
 | 
					 | 
				
			||||||
	screen_write_initctx(ctx, &ttyctx, 1);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/* Sanity checks. */
 | 
						/* Sanity checks. */
 | 
				
			||||||
	if (((s->mode & MODE_WRAP) && s->cx > screen_size_x(s) - width)
 | 
						if (((s->mode & MODE_WRAP) && s->cx > screen_size_x(s) - width)
 | 
				
			||||||
	    || s->cy > screen_size_y(s) - 1)
 | 
						    || s->cy > screen_size_y(s) - 1)
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								tty.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								tty.c
									
									
									
									
									
								
							@@ -1000,7 +1000,10 @@ tty_cmd_cell(struct tty *tty, const struct tty_ctx *ctx)
 | 
				
			|||||||
			 * The pane doesn't fill the entire line, the linefeed
 | 
								 * The pane doesn't fill the entire line, the linefeed
 | 
				
			||||||
			 * will already have happened, so just move the cursor.
 | 
								 * will already have happened, so just move the cursor.
 | 
				
			||||||
			 */
 | 
								 */
 | 
				
			||||||
			tty_cursor_pane(tty, ctx, 0, ctx->ocy + 1);
 | 
								if (ctx->ocy != wp->yoff + wp->sy)
 | 
				
			||||||
 | 
									tty_cursor_pane(tty, ctx, 0, ctx->ocy + 1);
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
									tty_cursor_pane(tty, ctx, 0, ctx->ocy);
 | 
				
			||||||
		} else if (tty->cx < tty->sx) {
 | 
							} else if (tty->cx < tty->sx) {
 | 
				
			||||||
			/*
 | 
								/*
 | 
				
			||||||
			 * The cursor isn't in the last position already, so
 | 
								 * The cursor isn't in the last position already, so
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user