From 4ae93a48d83a8340493aef0049c43f6180033807 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 26 Jan 2012 12:48:36 +0000 Subject: Fix #29958: Search Menu keeps hiding first character(s) after long input - ui_check_but() in ui_textedit_move() is necessary because this function clips but->drawstring to fit text entry widget and it confuses cursor movement stuff. ui_check_but copies editstring to drawstring, so displaystring would be clipped again in correct way. - If the whole drawstring fits widget, no need to set button's offset. --- source/blender/editors/interface/interface_handlers.c | 2 ++ source/blender/editors/interface/interface_widgets.c | 3 +++ 2 files changed, 5 insertions(+) (limited to 'source/blender/editors/interface') diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 849d3ecc758..cfb375c2558 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -1527,6 +1527,8 @@ static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction const int pos_prev= but->pos; const int has_sel= (but->selend - but->selsta) > 0; + ui_check_but(but); + /* special case, quit selection and set cursor */ if (has_sel && !select) { if (jump == BUTTON_EDIT_JUMP_ALL) { diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 19acfaccaa3..cd0844a38a3 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -952,6 +952,9 @@ static void ui_text_leftclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) if(but->editstr && but->pos >= 0) { if(but->ofs > but->pos) but->ofs= but->pos; + + if(BLF_width(fstyle->uifont_id, but->drawstr) <= okwidth) + but->ofs = 0; } else but->ofs= 0; -- cgit v1.2.3