[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [51321] trunk/blender/source/blender/ editors: Fix for misplaced cursor in wrapped console prompt, also fixes newline for single wrap when input line width equals console width
Sv. Lockal
lockalsash at gmail.com
Sun Oct 14 21:57:50 CEST 2012
Revision: 51321
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=51321
Author: lockal
Date: 2012-10-14 19:57:49 +0000 (Sun, 14 Oct 2012)
Log Message:
-----------
Fix for misplaced cursor in wrapped console prompt, also fixes newline for single wrap when input line width equals console width
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_console/console_draw.c
trunk/blender/source/blender/editors/space_info/textview.c
Modified: trunk/blender/source/blender/editors/space_console/console_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_console/console_draw.c 2012-10-14 19:39:38 UTC (rev 51320)
+++ trunk/blender/source/blender/editors/space_console/console_draw.c 2012-10-14 19:57:49 UTC (rev 51321)
@@ -94,12 +94,14 @@
{
/* fake the edit line being in the scroll buffer */
ConsoleLine *cl = sc->history.last;
+ int prompt_len = strlen(sc->prompt);
+
cl_dummy->type = CONSOLE_LINE_INPUT;
- cl_dummy->len = cl_dummy->len_alloc = strlen(sc->prompt) + cl->len;
+ cl_dummy->len = prompt_len + cl->len;
cl_dummy->len_alloc = cl_dummy->len + 1;
cl_dummy->line = MEM_mallocN(cl_dummy->len_alloc, "cl_dummy");
- memcpy(cl_dummy->line, sc->prompt, (cl_dummy->len_alloc - cl->len));
- memcpy(cl_dummy->line + ((cl_dummy->len_alloc - cl->len)) - 1, cl->line, cl->len + 1);
+ memcpy(cl_dummy->line, sc->prompt, prompt_len);
+ memcpy(cl_dummy->line + prompt_len, cl->line, cl->len + 1);
BLI_addtail(&sc->scrollback, cl_dummy);
}
void console_scrollback_prompt_end(struct SpaceConsole *sc, ConsoleLine *cl_dummy)
@@ -158,12 +160,13 @@
const ConsoleLine *cl = (ConsoleLine *)sc->history.last;
const int prompt_len = strlen(sc->prompt);
const int cursor_loc = cl->cursor + prompt_len;
+ const int line_len = cl->len + prompt_len;
int xy[2] = {CONSOLE_DRAW_MARGIN, CONSOLE_DRAW_MARGIN};
int pen[2];
xy[1] += tvc->lheight / 6;
/* account for wrapping */
- if (cl->len < tvc->console_width) {
+ if (line_len < tvc->console_width) {
/* simple case, no wrapping */
pen[0] = tvc->cwidth * cursor_loc;
pen[1] = -2;
@@ -171,7 +174,7 @@
else {
/* wrap */
pen[0] = tvc->cwidth * (cursor_loc % tvc->console_width);
- pen[1] = -2 + (((cl->len / tvc->console_width) - (cursor_loc / tvc->console_width)) * tvc->lheight);
+ pen[1] = -2 + (((line_len / tvc->console_width) - (cursor_loc / tvc->console_width)) * tvc->lheight);
}
/* cursor */
Modified: trunk/blender/source/blender/editors/space_info/textview.c
===================================================================
--- trunk/blender/source/blender/editors/space_info/textview.c 2012-10-14 19:39:38 UTC (rev 51320)
+++ trunk/blender/source/blender/editors/space_info/textview.c 2012-10-14 19:57:49 UTC (rev 51321)
@@ -128,7 +128,7 @@
return 1;
}
- if (str_len > cdc->console_width) { /* wrap? */
+ if (tot_lines > 1) { /* wrap? */
const int initial_offset = ((tot_lines - 1) * cdc->console_width);
const char *line_stride = str + initial_offset; /* advance to the last line and draw it first */
More information about the Bf-blender-cvs
mailing list