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:
-rw-r--r--source/blender/editors/interface/interface.c52
-rw-r--r--source/blender/editors/util/undo.c14
2 files changed, 35 insertions, 31 deletions
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 7e6e00bbdff..56222889cf2 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -207,43 +207,41 @@ void ui_block_translate(uiBlock *block, int x, int y)
static void ui_text_bounds_block(uiBlock *block, float offset)
{
uiStyle *style = UI_GetStyle();
- uiBut *bt;
- int i = 0, j, x1addval = offset, nextcol;
- int lastcol = 0, col = 0;
-
+ uiBut *bt, *init_col_bt, *col_bt;
+ int i = 0, j, x1addval = offset;
+
uiStyleFontSet(&style->widget);
-
- for (bt = block->buttons.first; bt; bt = bt->next) {
+
+ for (init_col_bt = bt = block->buttons.first; bt; bt = bt->next) {
if (!ELEM(bt->type, SEPR, SEPRLINE)) {
j = BLF_width(style->widget.uifont_id, bt->drawstr, sizeof(bt->drawstr));
- if (j > i) i = j;
+ if (j > i)
+ i = j;
}
- if (bt->next && bt->rect.xmin < bt->next->rect.xmin)
- lastcol++;
- }
+ if (bt->next && bt->rect.xmin < bt->next->rect.xmin) {
+ /* End of this column, and it’s not the last one. */
+ for (col_bt = init_col_bt; col_bt->prev != bt; col_bt = col_bt->next) {
+ col_bt->rect.xmin = x1addval;
+ col_bt->rect.xmax = x1addval + i + block->bounds;
- /* cope with multi collumns */
- bt = block->buttons.first;
- while (bt) {
- nextcol = (bt->next && bt->rect.xmin < bt->next->rect.xmin);
-
- bt->rect.xmin = x1addval;
- bt->rect.xmax = bt->rect.xmin + i + block->bounds;
-
- if (col == lastcol) {
- bt->rect.xmax = max_ff(bt->rect.xmax, offset + block->minbounds);
- }
+ ui_check_but(col_bt); /* clips text again */
+ }
- ui_check_but(bt); /* clips text again */
-
- if (nextcol) {
+ /* And we prepare next column. */
x1addval += i + block->bounds;
- col++;
+ i = 0;
+ init_col_bt = col_bt;
}
-
- bt = bt->next;
+ }
+
+ /* Last column. */
+ for (col_bt = init_col_bt; col_bt; col_bt = col_bt->next) {
+ col_bt->rect.xmin = x1addval;
+ col_bt->rect.xmax = max_ff(x1addval + i + block->bounds, offset + block->minbounds);
+
+ ui_check_but(col_bt); /* clips text again */
}
}
diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c
index 434f1e30188..733b45f560d 100644
--- a/source/blender/editors/util/undo.c
+++ b/source/blender/editors/util/undo.c
@@ -533,14 +533,20 @@ static int undo_history_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSE
uiLayout *layout = uiPupMenuLayout(pup);
uiLayout *split = uiLayoutSplit(layout, 0.0f, false);
uiLayout *column = NULL;
+ const int col_size = 20 + totitem / 12;
int i, c;
+ bool add_col = true;
- for (c = 0, i = totitem - 1; i >= 0; i--, c++) {
- if ( (c % 20) == 0)
+ for (c = 0, i = totitem; i--;) {
+ if (add_col && !(c % col_size)) {
column = uiLayoutColumn(split, false);
- if (item[i].identifier)
+ add_col = false;
+ }
+ if (item[i].identifier) {
uiItemIntO(column, item[i].name, item[i].icon, op->type->idname, "item", item[i].value);
-
+ ++c;
+ add_col = true;
+ }
}
MEM_freeN(item);