use define for text offset & seletion.
authorCampbell Barton <ideasman42@gmail.com>
Thu, 17 Jan 2013 18:59:19 +0000 (18:59 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 17 Jan 2013 18:59:19 +0000 (18:59 +0000)
and no need to calloc memory for string selection.

source/blender/editors/interface/interface_handlers.c
source/blender/editors/interface/interface_intern.h
source/blender/editors/interface/interface_widgets.c

index 384f5232be953f674189a10064ddd518976e790f..dc87a23cd545910d8f2f4984861e32fee011231b 100644 (file)
@@ -1416,11 +1416,11 @@ static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data)
 }
 
 /* note, but->block->aspect is used here, when drawing button style is getting scaled too */
-static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x)
+static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, const float x)
 {
        uiStyle *style = UI_GetStyle();  // XXX pass on as arg
        uiFontStyle *fstyle = &style->widget;
-       int startx = but->rect.xmin;
+       float startx = but->rect.xmin;
        char *origstr, password_str[UI_MAX_DRAW_STR];
 
        uiStyleFontSet(fstyle);
@@ -1430,18 +1430,20 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
        
        ui_button_text_password_hide(password_str, but, FALSE);
 
-       origstr = MEM_callocN(sizeof(char) * data->maxlen, "ui_textedit origstr");
+       origstr = MEM_mallocN(sizeof(char) * data->maxlen, "ui_textedit origstr");
        
        BLI_strncpy(origstr, but->drawstr, data->maxlen);
        
-       /* XXX solve generic */
-       if (but->type == NUM || but->type == NUMSLI)
+       /* XXX solve generic, see: #widget_draw_text_icon */
+       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)) {
-               /* 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)
+               if (but->flag & UI_HAS_ICON) {
                        startx += UI_DPI_ICON_SIZE;
+               }
+               /* but this extra .05 makes clicks inbetween characters feel nicer */
+               startx += ((UI_TEXT_MARGIN_X + 0.05f) * U.widget_unit);
        }
        
        /* mouse dragged outside the widget to the left */
@@ -1511,7 +1513,7 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho
        MEM_freeN(origstr);
 }
 
-static void ui_textedit_set_cursor_select(uiBut *but, uiHandleButtonData *data, short x)
+static void ui_textedit_set_cursor_select(uiBut *but, uiHandleButtonData *data, const float x)
 {
        if      (x > data->selstartx) data->selextend = EXTEND_RIGHT;
        else if (x < data->selstartx) data->selextend = EXTEND_LEFT;
index 706301dc0607b8cae7feda3160ddd36db981ce76..0b94a0dabdced97da0fd42125e13afd5ffeb9918 100644 (file)
@@ -537,6 +537,8 @@ extern unsigned char checker_stipple_sml[32 * 32 / 8];
 #define UI_TRANSP_DARK 100
 #define UI_TRANSP_LIGHT 160
 
+#define UI_TEXT_MARGIN_X 0.4f
+
 /* interface_style.c */
 void uiStyleInit(void);
 
index 42ae9c121771b3d8ef72c06337755b27cd5d1382..18c462b98a786c081c60d88f450f358ee2d2ceb9 100644 (file)
@@ -1325,11 +1325,11 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
                        rect->xmin += (int)(0.8f * BLI_rcti_size_y(rect));
 
                        if (but->editstr || (but->flag & UI_TEXT_LEFT)) {
-                               rect->xmin += (0.4f * U.widget_unit) / but->block->aspect;
+                               rect->xmin += (UI_TEXT_MARGIN_X * U.widget_unit) / but->block->aspect;
                        }
                }
                else if ((but->flag & UI_TEXT_LEFT)) {
-                       rect->xmin += (0.4f * U.widget_unit) / but->block->aspect;
+                       rect->xmin += (UI_TEXT_MARGIN_X * U.widget_unit) / but->block->aspect;
                }
                
                /* unlink icon for this button type */