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>2013-12-18 10:11:38 +0400
committerCampbell Barton <ideasman42@gmail.com>2013-12-18 10:13:58 +0400
commitd963bdf7d9f39b87ef6698ca7f267b3af58160e4 (patch)
tree8eefbe10185b84c340af3c9608cb67ff07bf84b7 /source/blender
parent2fb704d1b8fe953ae2067fa40fb9084868d31603 (diff)
UI: more fixes for text clipping
Were still cases where numbers could be clipped incorrectly and icon size was accounted for twice when left clipping (error in own recent commit).
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/editors/interface/interface_widgets.c40
1 files changed, 19 insertions, 21 deletions
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index af5520340d3..8c49d8c7a8b 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -60,6 +60,9 @@
#include "interface_intern.h"
+/* icons are 80% of height of button (16 pixels inside 20 height) */
+#define ICON_SIZE_FROM_BUTRECT(rect) (0.8f * BLI_rcti_size_y(rect))
+
/* ************** widget base functions ************** */
/*
* - in: roundbox codes for corner types and radius
@@ -822,6 +825,8 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol)
/* *********************** text/icon ************************************** */
+#define UI_TEXT_CLIP_MARGIN (0.25f * U.widget_unit / but->block->aspect)
+
#define PREVIEW_PAD 4
static void widget_draw_preview(BIFIconID icon, float UNUSED(alpha), const rcti *rect)
@@ -845,14 +850,14 @@ static void widget_draw_preview(BIFIconID icon, float UNUSED(alpha), const rcti
}
-static int ui_but_draw_menu_icon(uiBut *but)
+static int ui_but_draw_menu_icon(const uiBut *but)
{
return (but->flag & UI_ICON_SUBMENU) && (but->dt == UI_EMBOSSP);
}
/* icons have been standardized... and this call draws in untransformed coordinates */
-static void widget_draw_icon(uiBut *but, BIFIconID icon, float alpha, const rcti *rect)
+static void widget_draw_icon(const uiBut *but, BIFIconID icon, float alpha, const rcti *rect)
{
float xs = 0.0f, ys = 0.0f;
float aspect, height;
@@ -950,15 +955,8 @@ static void ui_text_clip_give_next_off(uiBut *but)
*/
static void ui_text_clip_left(uiFontStyle *fstyle, uiBut *but, const rcti *rect)
{
- int border = (but->drawflag & UI_BUT_ALIGN_RIGHT) ? 8 : 10;
- int okwidth = BLI_rcti_size_x(rect) - border;
-
- if (but->flag & UI_HAS_ICON)
- okwidth -= UI_DPI_ICON_SIZE;
- if ((but->type == SEARCH_MENU_UNLINK) && ui_is_but_search_unlink_visible(but))
- okwidth -= BLI_rcti_size_y(rect);
-
- okwidth = max_ii(okwidth, 0);
+ const int border = UI_TEXT_CLIP_MARGIN + 1;
+ const int okwidth = max_ii(BLI_rcti_size_x(rect) - border, 0);
/* need to set this first */
uiStyleFontSet(fstyle);
@@ -986,9 +984,8 @@ static void ui_text_clip_left(uiFontStyle *fstyle, uiBut *but, const rcti *rect)
*/
static void ui_text_clip_cursor(uiFontStyle *fstyle, uiBut *but, const rcti *rect)
{
- int border = (but->drawflag & UI_BUT_ALIGN_RIGHT) ? 8 : 10;
- int okwidth = max_ii(BLI_rcti_size_x(rect) - border, 0);
- if (but->flag & UI_HAS_ICON) okwidth -= UI_DPI_ICON_SIZE;
+ const int border = UI_TEXT_CLIP_MARGIN + 1;
+ const int okwidth = max_ii(BLI_rcti_size_x(rect) - border, 0);
BLI_assert(but->editstr && but->pos >= 0);
@@ -1046,7 +1043,7 @@ static void ui_text_clip_cursor(uiFontStyle *fstyle, uiBut *but, const rcti *rec
*/
static void ui_text_clip_right_label(uiFontStyle *fstyle, uiBut *but, const rcti *rect)
{
- const int border = 4;
+ const int border = UI_TEXT_CLIP_MARGIN + 1;
const int okwidth = max_ii(BLI_rcti_size_x(rect) - border, 0);
char *cpoin = NULL;
int drawstr_len = strlen(but->drawstr);
@@ -1256,7 +1253,7 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b
/* part text right aligned */
if (drawstr_right) {
fstyle->align = UI_STYLE_TEXT_RIGHT;
- rect->xmax -= 0.25f * U.widget_unit / but->block->aspect;
+ rect->xmax -= UI_TEXT_CLIP_MARGIN;
uiStyleFontDraw(fstyle, rect, drawstr_right);
}
}
@@ -1284,7 +1281,7 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
if (but->flag & UI_HAS_ICON) {
widget_draw_icon(but, but->icon + but->iconadd, alpha, rect);
- rect->xmin += 0.8f * BLI_rcti_size_y(rect);
+ rect->xmin += ICON_SIZE_FROM_BUTRECT(rect);
}
if (but->editstr || (but->drawflag & UI_BUT_TEXT_LEFT)) {
@@ -1293,13 +1290,14 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
else if ((but->drawflag & UI_BUT_TEXT_RIGHT)) {
rect->xmax -= (UI_TEXT_MARGIN_X * U.widget_unit) / but->block->aspect;
}
-
+
/* unlink icon for this button type */
if ((but->type == SEARCH_MENU_UNLINK) && ui_is_but_search_unlink_visible(but)) {
rcti temp = *rect;
temp.xmin = temp.xmax - (BLI_rcti_size_y(rect) * 1.08f);
widget_draw_icon(but, ICON_X, alpha, &temp);
+ rect->xmax -= ICON_SIZE_FROM_BUTRECT(rect);
}
/* clip but->drawstr to fit in available space */
@@ -1325,6 +1323,7 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB
ui_button_text_password_hide(password_str, but, TRUE);
}
+#undef UI_TEXT_CLIP_MARGIN
/* *********************** widget types ************************************* */
@@ -3547,9 +3546,8 @@ void ui_draw_menu_item(uiFontStyle *fstyle, rcti *rect, const char *name, int ic
float height, aspect;
int xs = rect->xmin + 0.2f * UI_UNIT_X;
int ys = rect->ymin + 0.1f * BLI_rcti_size_y(rect);
-
- /* icons are 80% of height of button (16 pixels inside 20 height) */
- height = 0.8f * BLI_rcti_size_y(rect);
+
+ height = ICON_SIZE_FROM_BUTRECT(rect);
aspect = ICON_DEFAULT_HEIGHT / height;
glEnable(GL_BLEND);