Index: source/blender/editors/space_buttons/buttons_header.c =================================================================== --- source/blender/editors/space_buttons/buttons_header.c (revision 51390) +++ source/blender/editors/space_buttons/buttons_header.c (working copy) @@ -105,6 +105,7 @@ uiBlock *block; uiBut *but; int xco, yco = 2; + int butwidth; buttons_context_compute(C, sbuts); @@ -112,18 +113,22 @@ uiBlockSetHandleFunc(block, do_buttons_buttons, NULL); xco = ED_area_header_switchbutton(C, block, yco); + xco += 4; uiBlockSetEmboss(block, UI_EMBOSS); - xco -= UI_UNIT_X; + butwidth = (ar->winx - (xco + (UI_UNIT_X / 2))) / HEADER_BUTS_NUM; + if (butwidth < HEADER_BUT_MIN_WIDTH) butwidth = HEADER_BUT_MIN_WIDTH; + xco -= butwidth; + /* Default panels */ uiBlockBeginAlign(block); #define BUTTON_HEADER_CTX(_ctx, _icon, _tip) \ if (sbuts->pathflag & (1 << _ctx)) { \ - but = uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, _icon, xco += BUT_UNIT_X, yco, BUT_UNIT_X, UI_UNIT_Y, &(sbuts->mainb), 0.0, (float)_ctx, 0, 0, TIP_(_tip)); \ + but = uiDefIconButS(block, ROW, B_CONTEXT_SWITCH, _icon, xco += butwidth, yco, butwidth, UI_UNIT_Y, &(sbuts->mainb), 0.0, (float)_ctx, 0, 0, TIP_(_tip)); \ uiButClearFlag(but, UI_BUT_UNDO); \ } (void)0 Index: source/blender/editors/space_buttons/buttons_intern.h =================================================================== --- source/blender/editors/space_buttons/buttons_intern.h (revision 51390) +++ source/blender/editors/space_buttons/buttons_intern.h (working copy) @@ -59,6 +59,12 @@ #define BUTS_SENS_STATE 512 #define BUTS_ACT_STATE 1024 + +/* header */ +#define HEADER_BUTS_NUM 11 +#define HEADER_BUT_MIN_WIDTH 10 + + /* context data */ typedef struct ButsContextPath {