[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53879] trunk/blender/source/blender/ editors/interface/interface_handlers.c: Bug fix #33887

Ton Roosendaal ton at blender.org
Thu Jan 17 12:35:34 CET 2013


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) {




More information about the Bf-blender-cvs mailing list