Revision: 53879
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53879
Author:   ton
Date:     2013-01-17 11:35:33 +0000 (Thu, 17 Jan 2013)
Log Message:
-----------
Bug fix #33887

Ancient issue: on much zoomed in UIs, text selecting or cursor placement
in Text-input buttons was off.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_handlers.c

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 
2013-01-17 10:16:40 UTC (rev 53878)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 
2013-01-17 11:35:33 UTC (rev 53879)
@@ -1438,7 +1438,8 @@
        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 @@
                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) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to