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>2019-12-03 11:37:51 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-12-03 11:53:40 +0300
commit1fdea43c29a7a0ffb65ec8049da574d4198d22af (patch)
treeb910b6604d60c6710570d4c133893ed2ce73abe1 /source/blender/editors/space_console/console_draw.c
parenta81fdefddebc0eec3e324cf6a9d8c51050d3e749 (diff)
Fix minor errors with text view margins for console/info editor
- Margins used duplicate define between files. - Cursor selection ignored margins. - Cursor wasn't scaling with DPI. Add a 'draw_rect' member which is the region rect with margins applied to make these checks clearer. This resolves issue pointed out in D6300, which complicated further refactoring.
Diffstat (limited to 'source/blender/editors/space_console/console_draw.c')
-rw-r--r--source/blender/editors/space_console/console_draw.c40
1 files changed, 26 insertions, 14 deletions
diff --git a/source/blender/editors/space_console/console_draw.c b/source/blender/editors/space_console/console_draw.c
index 4d6b05df609..02278934c20 100644
--- a/source/blender/editors/space_console/console_draw.c
+++ b/source/blender/editors/space_console/console_draw.c
@@ -80,8 +80,6 @@ void console_scrollback_prompt_end(struct SpaceConsole *sc, ConsoleLine *cl_dumm
BLI_remlink(&sc->scrollback, cl_dummy);
}
-#define CONSOLE_DRAW_MARGIN 4
-
/* console textview callbacks */
static int console_textview_begin(TextViewContext *tvc)
{
@@ -150,7 +148,7 @@ static int console_textview_line_color(struct TextViewContext *tvc,
const SpaceConsole *sc = (SpaceConsole *)tvc->arg1;
const ConsoleLine *cl = (ConsoleLine *)sc->history.last;
int offl = 0, offc = 0;
- int xy[2] = {CONSOLE_DRAW_MARGIN, CONSOLE_DRAW_MARGIN};
+ 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);
@@ -169,9 +167,9 @@ static int console_textview_line_color(struct TextViewContext *tvc,
immUniformThemeColor(TH_CONSOLE_CURSOR);
immRectf(pos,
- (xy[0] + pen[0]) - 1,
+ (xy[0] + pen[0]) - U.pixelsize,
(xy[1] + pen[1]),
- (xy[0] + pen[0]) + 1,
+ (xy[0] + pen[0]) + U.pixelsize,
(xy[1] + pen[1] + tvc->lheight));
immUnbindProgram();
@@ -187,8 +185,22 @@ static void console_textview_const_colors(TextViewContext *UNUSED(tvc), unsigned
UI_GetThemeColor4ubv(TH_CONSOLE_SELECT, bg_sel);
}
-static int console_textview_main__internal(
- struct SpaceConsole *sc, ARegion *ar, int draw, int mval[2], void **mouse_pick, int *pos_pick)
+static void console_textview_draw_rect_calc(const ARegion *ar, rcti *draw_rect)
+{
+ const int margin = 4 * UI_DPI_FAC;
+ draw_rect->xmin = margin;
+ draw_rect->xmax = ar->winx - (margin + V2D_SCROLL_WIDTH);
+ draw_rect->ymin = margin;
+ /* No margin at the top (allow text to scroll off the window). */
+ draw_rect->ymax = ar->winy;
+}
+
+static int console_textview_main__internal(struct SpaceConsole *sc,
+ ARegion *ar,
+ int draw,
+ const int mval[2],
+ void **mouse_pick,
+ int *pos_pick)
{
ConsoleLine cl_dummy = {NULL};
int ret = 0;
@@ -214,7 +226,8 @@ static int console_textview_main__internal(
tvc.lheight = sc->lheight * UI_DPI_FAC;
tvc.ymin = v2d->cur.ymin;
tvc.ymax = v2d->cur.ymax;
- tvc.winx = ar->winx - V2D_SCROLL_WIDTH;
+
+ console_textview_draw_rect_calc(ar, &tvc.draw_rect);
console_scrollback_prompt_begin(sc, &cl_dummy);
ret = textview_draw(&tvc, draw, mval, mouse_pick, pos_pick);
@@ -225,13 +238,13 @@ static int console_textview_main__internal(
void console_textview_main(struct SpaceConsole *sc, ARegion *ar)
{
- int mval[2] = {INT_MAX, INT_MAX};
+ const int mval[2] = {INT_MAX, INT_MAX};
console_textview_main__internal(sc, ar, 1, mval, NULL, NULL);
}
int console_textview_height(struct SpaceConsole *sc, ARegion *ar)
{
- int mval[2] = {INT_MAX, INT_MAX};
+ const int mval[2] = {INT_MAX, INT_MAX};
return console_textview_main__internal(sc, ar, 0, mval, NULL, NULL);
}
@@ -239,11 +252,10 @@ int console_char_pick(struct SpaceConsole *sc, ARegion *ar, const int mval[2])
{
int pos_pick = 0;
void *mouse_pick = NULL;
- int mval_clamp[2];
- mval_clamp[0] = CLAMPIS(mval[0], CONSOLE_DRAW_MARGIN, ar->winx - CONSOLE_DRAW_MARGIN);
- mval_clamp[1] = CLAMPIS(mval[1], CONSOLE_DRAW_MARGIN, ar->winy - CONSOLE_DRAW_MARGIN);
+ rcti draw_rect;
+ console_textview_draw_rect_calc(ar, &draw_rect);
- console_textview_main__internal(sc, ar, 0, mval_clamp, &mouse_pick, &pos_pick);
+ console_textview_main__internal(sc, ar, 0, mval, &mouse_pick, &pos_pick);
return pos_pick;
}