Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-02-14 08:11:01 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-02-14 08:14:02 +0300
commitf621f03e4b252d5ef1d86b9306a22628da3160ce (patch)
tree21f4630ba495ca2eaa6ea1e7accf6be1bfd762d3 /source/blender/editors
parentbbe6b661df08bbd0c73a2b89bffe4525667aab9b (diff)
Fix console cursor offset
Also remove hard coded offsets.
Diffstat (limited to 'source/blender/editors')
-rw-r--r--source/blender/editors/space_console/console_draw.c41
-rw-r--r--source/blender/editors/space_info/textview.c16
-rw-r--r--source/blender/editors/space_info/textview.h6
3 files changed, 29 insertions, 34 deletions
diff --git a/source/blender/editors/space_console/console_draw.c b/source/blender/editors/space_console/console_draw.c
index af01ec72ec2..3ba355b3730 100644
--- a/source/blender/editors/space_console/console_draw.c
+++ b/source/blender/editors/space_console/console_draw.c
@@ -144,34 +144,37 @@ static void console_cursor_wrap_offset(
return;
}
-static void console_textview_draw_cursor(struct TextViewContext *tvc)
+static void console_textview_draw_cursor(struct TextViewContext *tvc,
+ int cwidth,
+ int columns,
+ int descender)
{
- const SpaceConsole *sc = (SpaceConsole *)tvc->arg1;
- const ConsoleLine *cl = (ConsoleLine *)sc->history.last;
- int offl = 0, offc = 0;
- int xy[2] = {tvc->draw_rect.xmin, tvc->draw_rect.ymin};
int pen[2];
- GPUVertFormat *format = immVertexFormat();
- uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
- xy[1] += tvc->lheight * 0.35f;
+ {
+ const SpaceConsole *sc = (SpaceConsole *)tvc->arg1;
+ const ConsoleLine *cl = (ConsoleLine *)sc->history.last;
+ int offl = 0, offc = 0;
+
+ console_cursor_wrap_offset(sc->prompt, columns, &offl, &offc, NULL);
+ console_cursor_wrap_offset(cl->line, columns, &offl, &offc, cl->line + cl->cursor);
+ pen[0] = cwidth * offc;
+ pen[1] = -2 - (tvc->lheight + descender) * offl;
- console_cursor_wrap_offset(sc->prompt, tvc->columns, &offl, &offc, NULL);
- console_cursor_wrap_offset(cl->line, tvc->columns, &offl, &offc, cl->line + cl->cursor);
- pen[0] = tvc->cwidth * offc;
- pen[1] = -2 - tvc->lheight * offl;
+ console_cursor_wrap_offset(cl->line + cl->cursor, columns, &offl, &offc, NULL);
+ pen[1] += (tvc->lheight + descender) * offl;
- console_cursor_wrap_offset(cl->line + cl->cursor, tvc->columns, &offl, &offc, NULL);
- pen[1] += tvc->lheight * offl;
+ pen[0] += tvc->draw_rect.xmin;
+ pen[1] += tvc->draw_rect.ymin;
+ }
/* cursor */
+ GPUVertFormat *format = immVertexFormat();
+ uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
immUniformThemeColor(TH_CONSOLE_CURSOR);
- immRectf(pos,
- (xy[0] + pen[0]) - U.pixelsize,
- (xy[1] + pen[1]),
- (xy[0] + pen[0]) + U.pixelsize,
- (xy[1] + pen[1] + tvc->lheight));
+ immRectf(
+ pos, pen[0] - U.pixelsize, pen[1], pen[0] + U.pixelsize, pen[1] + tvc->lheight + descender);
immUnbindProgram();
}
diff --git a/source/blender/editors/space_info/textview.c b/source/blender/editors/space_info/textview.c
index 6678ac2b659..d7f2cb9ce1f 100644
--- a/source/blender/editors/space_info/textview.c
+++ b/source/blender/editors/space_info/textview.c
@@ -93,7 +93,7 @@ static void textview_draw_sel(const char *str,
immBindBuiltinProgram(GPU_SHADER_2D_UNIFORM_COLOR);
immUniformColor4ubv(bg_sel);
- immRecti(pos, xy[0] + (cwidth * sta), xy[1] - 2 + lheight, xy[0] + (cwidth * end), xy[1] - 2);
+ immRecti(pos, xy[0] + (cwidth * sta), xy[1] + lheight, xy[0] + (cwidth * end), xy[1]);
immUnbindProgram();
@@ -316,7 +316,7 @@ int textview_draw(TextViewContext *tvc,
{
TextViewDrawState tds = {0};
- int x_orig = tvc->draw_rect.xmin, y_orig = tvc->draw_rect.ymin + tvc->lheight / 6;
+ const int x_orig = tvc->draw_rect.xmin, y_orig = tvc->draw_rect.ymin;
int xy[2];
/* Disable selection by. */
int sel[2] = {-1, -1};
@@ -367,11 +367,6 @@ int textview_draw(TextViewContext *tvc,
tds.mval = mval;
tds.do_draw = do_draw;
- /* Shouldnt be needed. */
- tvc->cwidth = tds.cwidth;
- tvc->columns = tds.columns;
- tvc->iter_index = 0;
-
if (tvc->sel_start != tvc->sel_end) {
sel[0] = tvc->sel_start;
sel[1] = tvc->sel_end;
@@ -384,6 +379,7 @@ int textview_draw(TextViewContext *tvc,
tvc->const_colors(tvc, bg_sel);
}
+ int iter_index = 0;
do {
const char *ext_line;
int ext_len;
@@ -414,8 +410,8 @@ int textview_draw(TextViewContext *tvc,
}
if (do_draw) {
- if (tvc->draw_cursor && tvc->iter_index == 0) {
- tvc->draw_cursor(tvc);
+ if (tvc->draw_cursor && iter_index == 0) {
+ tvc->draw_cursor(tvc, tds.cwidth, tds.columns, tds.lofs);
}
}
@@ -424,7 +420,7 @@ int textview_draw(TextViewContext *tvc,
break;
}
- tvc->iter_index++;
+ iter_index++;
} while (tvc->step(tvc));
}
diff --git a/source/blender/editors/space_info/textview.h b/source/blender/editors/space_info/textview.h
index 6fcd9d30abe..a33ed91570d 100644
--- a/source/blender/editors/space_info/textview.h
+++ b/source/blender/editors/space_info/textview.h
@@ -27,10 +27,6 @@ typedef struct TextViewContext {
/** Text selection, when a selection range is in use. */
int sel_start, sel_end;
- /* view settings */
- int cwidth; /* shouldnt be needed! */
- int columns; /* shouldnt be needed! */
-
int row_vpadding;
/** Area to draw text: (0, 0, winx, winy) with a margin applied and scroll-bar subtracted. */
@@ -56,7 +52,7 @@ typedef struct TextViewContext {
int *icon,
unsigned char icon_fg[4],
unsigned char icon_bg[4]);
- void (*draw_cursor)(struct TextViewContext *tvc);
+ void (*draw_cursor)(struct TextViewContext *tvc, int cwidth, int columns, int descender);
/* constant theme colors */
void (*const_colors)(struct TextViewContext *tvc, unsigned char bg_sel[4]);
void *iter;