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:
authorTon Roosendaal <ton@blender.org>2013-01-17 15:35:33 +0400
committerTon Roosendaal <ton@blender.org>2013-01-17 15:35:33 +0400
commit0193c88083860029f0c631c703eb1c065a7d4da9 (patch)
tree3305871f0a232b67b502ad67e467b630235ef338 /source/blender/editors/interface
parent7af0fff9d8830bc0add90632d6b9ab4d2d9661c3 (diff)
Bug fix #33887
Ancient issue: on much zoomed in UIs, text selecting or cursor placement in Text-input buttons was off.
Diffstat (limited to 'source/blender/editors/interface')
-rw-r--r--source/blender/editors/interface/interface_handlers.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index d1f6f1e1063..384f5232be9 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -1438,7 +1438,8 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
if (but->type == NUM || but->type == NUMSLI)
startx += (int)(0.5f * (BLI_rctf_size_y(&but->rect)));
else if (ELEM3(but->type, TEX, SEARCH_MENU, SEARCH_MENU_UNLINK)) {
- startx += 5;
+ /* text draws with offset 0.40, but this extra .05 makes clicks inbetween characters feel nicer */
+ startx += (0.45f * U.widget_unit);
if (but->flag & UI_HAS_ICON)
startx += UI_DPI_ICON_SIZE;
}
@@ -1463,21 +1464,18 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
but->ofs = i;
but->pos = but->ofs;
}
- /* mouse inside the widget */
+ /* mouse inside the widget, mouse coords mapped in widget space */
else if (x >= startx) {
int pos_i;
/* keep track of previous distance from the cursor to the char */
float cdist, cdist_prev = 0.0f;
short pos_prev;
-
- const float aspect_sqrt = sqrtf(but->block->aspect);
but->pos = pos_prev = strlen(origstr) - but->ofs;
while (TRUE) {
- /* XXX does not take zoom level into account */
- cdist = startx + aspect_sqrt * BLF_width(fstyle->uifont_id, origstr + but->ofs);
+ cdist = startx + BLF_width(fstyle->uifont_id, origstr + but->ofs);
/* check if position is found */
if (cdist < x) {