Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_file/file_draw.c
| Show First 20 Lines • Show All 110 Lines • ▼ Show 20 Lines | void file_draw_buttons(const bContext *C, ARegion *ar) | ||||
| uiBut *but; | uiBut *but; | ||||
| uiBlock *block; | uiBlock *block; | ||||
| SpaceFile *sfile = CTX_wm_space_file(C); | SpaceFile *sfile = CTX_wm_space_file(C); | ||||
| FileSelectParams *params = ED_fileselect_get_params(sfile); | FileSelectParams *params = ED_fileselect_get_params(sfile); | ||||
| ARegion *artmp; | ARegion *artmp; | ||||
| /* Initialize UI block. */ | /* Initialize UI block. */ | ||||
| BLI_snprintf(uiblockstr, sizeof(uiblockstr), "win %p", (void *)ar); | BLI_snprintf(uiblockstr, sizeof(uiblockstr), "win %p", (void *)ar); | ||||
| block = uiBeginBlock(C, ar, uiblockstr, UI_EMBOSS); | block = UI_block_begin(C, ar, uiblockstr, UI_EMBOSS); | ||||
| /* exception to make space for collapsed region icon */ | /* exception to make space for collapsed region icon */ | ||||
| for (artmp = CTX_wm_area(C)->regionbase.first; artmp; artmp = artmp->next) { | for (artmp = CTX_wm_area(C)->regionbase.first; artmp; artmp = artmp->next) { | ||||
| if (artmp->regiontype == RGN_TYPE_CHANNELS && artmp->flag & RGN_FLAG_HIDDEN) { | if (artmp->regiontype == RGN_TYPE_CHANNELS && artmp->flag & RGN_FLAG_HIDDEN) { | ||||
| chan_offs = 16; | chan_offs = 16; | ||||
| min_x += chan_offs; | min_x += chan_offs; | ||||
| available_w -= chan_offs; | available_w -= chan_offs; | ||||
| } | } | ||||
| } | } | ||||
| /* Is there enough space for the execute / cancel buttons? */ | /* Is there enough space for the execute / cancel buttons? */ | ||||
| loadbutton = UI_GetStringWidth(sfile->params->title) + btn_margin; | loadbutton = UI_fontstyle_string_width(sfile->params->title) + btn_margin; | ||||
| if (loadbutton < btn_minw) { | if (loadbutton < btn_minw) { | ||||
| loadbutton = MAX2(btn_minw, | loadbutton = MAX2(btn_minw, | ||||
| btn_margin + UI_GetStringWidth(params->title)); | btn_margin + UI_fontstyle_string_width(params->title)); | ||||
| } | } | ||||
| if (available_w <= loadbutton + separator + input_minw || params->title[0] == 0) { | if (available_w <= loadbutton + separator + input_minw || params->title[0] == 0) { | ||||
| loadbutton = 0; | loadbutton = 0; | ||||
| } | } | ||||
| else { | else { | ||||
| line1_w -= (loadbutton + separator); | line1_w -= (loadbutton + separator); | ||||
| line2_w = line1_w; | line2_w = line1_w; | ||||
| } | } | ||||
| /* Is there enough space for file number increment/decrement buttons? */ | /* Is there enough space for file number increment/decrement buttons? */ | ||||
| fnumbuttons = 2 * btn_fn_w; | fnumbuttons = 2 * btn_fn_w; | ||||
| if (!loadbutton || line2_w <= fnumbuttons + separator + input_minw) { | if (!loadbutton || line2_w <= fnumbuttons + separator + input_minw) { | ||||
| fnumbuttons = 0; | fnumbuttons = 0; | ||||
| } | } | ||||
| else { | else { | ||||
| line2_w -= (fnumbuttons + separator); | line2_w -= (fnumbuttons + separator); | ||||
| } | } | ||||
| /* Text input fields for directory and file. */ | /* Text input fields for directory and file. */ | ||||
| if (available_w > 0) { | if (available_w > 0) { | ||||
| int overwrite_alert = file_draw_check_exists(sfile); | int overwrite_alert = file_draw_check_exists(sfile); | ||||
| /* callbacks for operator check functions */ | /* callbacks for operator check functions */ | ||||
| uiBlockSetFunc(block, file_draw_check_cb, NULL, NULL); | UI_block_func_set(block, file_draw_check_cb, NULL, NULL); | ||||
| but = uiDefBut(block, TEX, -1, "", | but = uiDefBut(block, UI_BTYPE_TEXT, -1, "", | ||||
| min_x, line1_y, line1_w - chan_offs, btn_h, | min_x, line1_y, line1_w - chan_offs, btn_h, | ||||
| params->dir, 0.0, (float)FILE_MAX, 0, 0, | params->dir, 0.0, (float)FILE_MAX, 0, 0, | ||||
| TIP_("File path")); | TIP_("File path")); | ||||
| uiButSetCompleteFunc(but, autocomplete_directory, NULL); | UI_but_func_complete_set(but, autocomplete_directory, NULL); | ||||
| uiButSetFlag(but, UI_BUT_NO_UTF8); | UI_but_flag_enable(but, UI_BUT_NO_UTF8); | ||||
| uiButClearFlag(but, UI_BUT_UNDO); | UI_but_flag_disable(but, UI_BUT_UNDO); | ||||
| uiButSetNFunc(but, file_directory_enter_handle, NULL, but); | UI_but_funcN_set(but, file_directory_enter_handle, NULL, but); | ||||
| /* TODO, directory editing is non-functional while a library is loaded | /* TODO, directory editing is non-functional while a library is loaded | ||||
| * until this is properly supported just disable it. */ | * until this is properly supported just disable it. */ | ||||
| if (sfile->files && filelist_lib(sfile->files)) | if (sfile->files && filelist_lib(sfile->files)) | ||||
| uiButSetFlag(but, UI_BUT_DISABLED); | UI_but_flag_enable(but, UI_BUT_DISABLED); | ||||
| if ((params->flag & FILE_DIRSEL_ONLY) == 0) { | if ((params->flag & FILE_DIRSEL_ONLY) == 0) { | ||||
| but = uiDefBut(block, TEX, -1, "", | but = uiDefBut(block, UI_BTYPE_TEXT, -1, "", | ||||
| min_x, line2_y, line2_w - chan_offs, btn_h, | min_x, line2_y, line2_w - chan_offs, btn_h, | ||||
| params->file, 0.0, (float)FILE_MAXFILE, 0, 0, | params->file, 0.0, (float)FILE_MAXFILE, 0, 0, | ||||
| TIP_(overwrite_alert ? N_("File name, overwrite existing") : N_("File name"))); | TIP_(overwrite_alert ? N_("File name, overwrite existing") : N_("File name"))); | ||||
| uiButSetCompleteFunc(but, autocomplete_file, NULL); | UI_but_func_complete_set(but, autocomplete_file, NULL); | ||||
| uiButSetFlag(but, UI_BUT_NO_UTF8); | UI_but_flag_enable(but, UI_BUT_NO_UTF8); | ||||
| uiButClearFlag(but, UI_BUT_UNDO); | UI_but_flag_disable(but, UI_BUT_UNDO); | ||||
| /* silly workaround calling NFunc to ensure this does not get called | /* silly workaround calling NFunc to ensure this does not get called | ||||
| * immediate ui_apply_but_func but only after button deactivates */ | * immediate ui_apply_but_func but only after button deactivates */ | ||||
| uiButSetNFunc(but, file_filename_enter_handle, NULL, but); | UI_but_funcN_set(but, file_filename_enter_handle, NULL, but); | ||||
| /* check if this overrides a file and if the operator option is used */ | /* check if this overrides a file and if the operator option is used */ | ||||
| if (overwrite_alert) { | if (overwrite_alert) { | ||||
| uiButSetFlag(but, UI_BUT_REDALERT); | UI_but_flag_enable(but, UI_BUT_REDALERT); | ||||
| } | } | ||||
| } | } | ||||
| /* clear func */ | /* clear func */ | ||||
| uiBlockSetFunc(block, NULL, NULL, NULL); | UI_block_func_set(block, NULL, NULL, NULL); | ||||
| } | } | ||||
| /* Filename number increment / decrement buttons. */ | /* Filename number increment / decrement buttons. */ | ||||
| if (fnumbuttons && (params->flag & FILE_DIRSEL_ONLY) == 0) { | if (fnumbuttons && (params->flag & FILE_DIRSEL_ONLY) == 0) { | ||||
| uiBlockBeginAlign(block); | UI_block_align_begin(block); | ||||
| but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMOUT, | but = uiDefIconButO(block, UI_BTYPE_BUT, "FILE_OT_filenum", 0, ICON_ZOOMOUT, | ||||
| min_x + line2_w + separator - chan_offs, line2_y, | min_x + line2_w + separator - chan_offs, line2_y, | ||||
| btn_fn_w, btn_h, | btn_fn_w, btn_h, | ||||
| TIP_("Decrement the filename number")); | TIP_("Decrement the filename number")); | ||||
| RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", -1); | RNA_int_set(UI_but_operator_ptr_get(but), "increment", -1); | ||||
| but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMIN, | but = uiDefIconButO(block, UI_BTYPE_BUT, "FILE_OT_filenum", 0, ICON_ZOOMIN, | ||||
| min_x + line2_w + separator + btn_fn_w - chan_offs, line2_y, | min_x + line2_w + separator + btn_fn_w - chan_offs, line2_y, | ||||
| btn_fn_w, btn_h, | btn_fn_w, btn_h, | ||||
| TIP_("Increment the filename number")); | TIP_("Increment the filename number")); | ||||
| RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", 1); | RNA_int_set(UI_but_operator_ptr_get(but), "increment", 1); | ||||
| uiBlockEndAlign(block); | UI_block_align_end(block); | ||||
| } | } | ||||
| /* Execute / cancel buttons. */ | /* Execute / cancel buttons. */ | ||||
| if (loadbutton) { | if (loadbutton) { | ||||
| /* params->title is already translated! */ | /* params->title is already translated! */ | ||||
| uiDefButO(block, BUT, "FILE_OT_execute", WM_OP_EXEC_REGION_WIN, params->title, | uiDefButO(block, UI_BTYPE_BUT, "FILE_OT_execute", WM_OP_EXEC_REGION_WIN, params->title, | ||||
| max_x - loadbutton, line1_y, loadbutton, btn_h, ""); | max_x - loadbutton, line1_y, loadbutton, btn_h, ""); | ||||
| uiDefButO(block, BUT, "FILE_OT_cancel", WM_OP_EXEC_REGION_WIN, IFACE_("Cancel"), | uiDefButO(block, UI_BTYPE_BUT, "FILE_OT_cancel", WM_OP_EXEC_REGION_WIN, IFACE_("Cancel"), | ||||
| max_x - loadbutton, line2_y, loadbutton, btn_h, ""); | max_x - loadbutton, line2_y, loadbutton, btn_h, ""); | ||||
| } | } | ||||
| uiEndBlock(C, block); | UI_block_end(C, block); | ||||
| uiDrawBlock(C, block); | UI_block_draw(C, block); | ||||
| } | } | ||||
| static void draw_tile(int sx, int sy, int width, int height, int colorid, int shade) | static void draw_tile(int sx, int sy, int width, int height, int colorid, int shade) | ||||
| { | { | ||||
| UI_ThemeColorShade(colorid, shade); | UI_ThemeColorShade(colorid, shade); | ||||
| uiSetRoundBox(UI_CNR_ALL); | UI_draw_roundbox_corner_set(UI_CNR_ALL); | ||||
| uiRoundBox((float)sx, (float)(sy - height), (float)(sx + width), (float)sy, 5.0f); | UI_draw_roundbox((float)sx, (float)(sy - height), (float)(sx + width), (float)sy, 5.0f); | ||||
| } | } | ||||
| static int get_file_icon(struct direntry *file) | static int get_file_icon(struct direntry *file) | ||||
| { | { | ||||
| if (file->type & S_IFDIR) { | if (file->type & S_IFDIR) { | ||||
| if (strcmp(file->relname, "..") == 0) { | if (strcmp(file->relname, "..") == 0) { | ||||
| return ICON_FILE_PARENT; | return ICON_FILE_PARENT; | ||||
| Show All 36 Lines | static void file_draw_icon(uiBlock *block, char *path, int sx, int sy, int icon, int width, int height, bool drag) | ||||
| int x, y; | int x, y; | ||||
| // float alpha = 1.0f; | // float alpha = 1.0f; | ||||
| x = sx; | x = sx; | ||||
| y = sy - height; | y = sy - height; | ||||
| /*if (icon == ICON_FILE_BLANK) alpha = 0.375f;*/ | /*if (icon == ICON_FILE_BLANK) alpha = 0.375f;*/ | ||||
| but = uiDefIconBut(block, LABEL, 0, icon, x, y, width, height, NULL, 0.0f, 0.0f, 0.0f, 0.0f, ""); | but = uiDefIconBut(block, UI_BTYPE_LABEL, 0, icon, x, y, width, height, NULL, 0.0f, 0.0f, 0.0f, 0.0f, ""); | ||||
| if (drag) | if (drag) | ||||
| uiButSetDragPath(but, path); | UI_but_drag_set_path(but, path); | ||||
| } | } | ||||
| static void file_draw_string(int sx, int sy, const char *string, float width, int height, short align) | static void file_draw_string(int sx, int sy, const char *string, float width, int height, short align) | ||||
| { | { | ||||
| uiStyle *style = UI_GetStyle(); | uiStyle *style = UI_style_get(); | ||||
| uiFontStyle fs = style->widgetlabel; | uiFontStyle fs = style->widgetlabel; | ||||
| rcti rect; | rcti rect; | ||||
| char fname[FILE_MAXFILE]; | char fname[FILE_MAXFILE]; | ||||
| fs.align = align; | fs.align = align; | ||||
| BLI_strncpy(fname, string, FILE_MAXFILE); | BLI_strncpy(fname, string, FILE_MAXFILE); | ||||
| file_shorten_string(fname, width + 1.0f, 0); | file_shorten_string(fname, width + 1.0f, 0); | ||||
| /* no text clipping needed, uiStyleFontDraw does it but is a bit too strict (for buttons it works) */ | /* no text clipping needed, UI_fontstyle_draw does it but is a bit too strict (for buttons it works) */ | ||||
| rect.xmin = sx; | rect.xmin = sx; | ||||
| rect.xmax = (int)(sx + ceil(width + 4.0f)); | rect.xmax = (int)(sx + ceil(width + 4.0f)); | ||||
| rect.ymin = sy - height; | rect.ymin = sy - height; | ||||
| rect.ymax = sy; | rect.ymax = sy; | ||||
| uiStyleFontDraw(&fs, &rect, fname); | UI_fontstyle_draw(&fs, &rect, fname); | ||||
| } | } | ||||
| void file_calc_previews(const bContext *C, ARegion *ar) | void file_calc_previews(const bContext *C, ARegion *ar) | ||||
| { | { | ||||
| SpaceFile *sfile = CTX_wm_space_file(C); | SpaceFile *sfile = CTX_wm_space_file(C); | ||||
| View2D *v2d = &ar->v2d; | View2D *v2d = &ar->v2d; | ||||
| ED_fileselect_init_layout(sfile, ar); | ED_fileselect_init_layout(sfile, ar); | ||||
| Show All 39 Lines | if (imb) { | ||||
| dy = (fy + 0.5f - layout->prv_border_y); | dy = (fy + 0.5f - layout->prv_border_y); | ||||
| xco = sx + (int)dx; | xco = sx + (int)dx; | ||||
| yco = sy - layout->prv_h + (int)dy; | yco = sy - layout->prv_h + (int)dy; | ||||
| glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); | ||||
| /* shadow */ | /* shadow */ | ||||
| if (dropshadow) | if (dropshadow) | ||||
| uiDrawBoxShadow(220, (float)xco, (float)yco, (float)(xco + ex), (float)(yco + ey)); | UI_draw_box_shadow(220, (float)xco, (float)yco, (float)(xco + ex), (float)(yco + ey)); | ||||
| glEnable(GL_BLEND); | glEnable(GL_BLEND); | ||||
| /* the image */ | /* the image */ | ||||
| glColor4f(1.0, 1.0, 1.0, 1.0); | glColor4f(1.0, 1.0, 1.0, 1.0); | ||||
| glaDrawPixelsTexScaled((float)xco, (float)yco, imb->x, imb->y, GL_RGBA, GL_UNSIGNED_BYTE, GL_NEAREST, imb->rect, scale, scale); | glaDrawPixelsTexScaled((float)xco, (float)yco, imb->x, imb->y, GL_RGBA, GL_UNSIGNED_BYTE, GL_NEAREST, imb->rect, scale, scale); | ||||
| /* border */ | /* border */ | ||||
| if (dropshadow) { | if (dropshadow) { | ||||
| glColor4f(0.0f, 0.0f, 0.0f, 0.4f); | glColor4f(0.0f, 0.0f, 0.0f, 0.4f); | ||||
| fdrawbox((float)xco, (float)yco, (float)(xco + ex), (float)(yco + ey)); | fdrawbox((float)xco, (float)yco, (float)(xco + ex), (float)(yco + ey)); | ||||
| } | } | ||||
| /* dragregion */ | /* dragregion */ | ||||
| if (drag) { | if (drag) { | ||||
| but = uiDefBut(block, LABEL, 0, "", xco, yco, ex, ey, NULL, 0.0, 0.0, 0, 0, ""); | but = uiDefBut(block, UI_BTYPE_LABEL, 0, "", xco, yco, ex, ey, NULL, 0.0, 0.0, 0, 0, ""); | ||||
| uiButSetDragImage(but, file->path, get_file_icon(file), imb, scale); | UI_but_drag_set_image(but, file->path, get_file_icon(file), imb, scale); | ||||
| } | } | ||||
| glDisable(GL_BLEND); | glDisable(GL_BLEND); | ||||
| } | } | ||||
| } | } | ||||
| static void renamebutton_cb(bContext *C, void *UNUSED(arg1), char *oldname) | static void renamebutton_cb(bContext *C, void *UNUSED(arg1), char *oldname) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 74 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| SpaceFile *sfile = CTX_wm_space_file(C); | SpaceFile *sfile = CTX_wm_space_file(C); | ||||
| FileSelectParams *params = ED_fileselect_get_params(sfile); | FileSelectParams *params = ED_fileselect_get_params(sfile); | ||||
| FileLayout *layout = ED_fileselect_get_layout(sfile, ar); | FileLayout *layout = ED_fileselect_get_layout(sfile, ar); | ||||
| View2D *v2d = &ar->v2d; | View2D *v2d = &ar->v2d; | ||||
| struct FileList *files = sfile->files; | struct FileList *files = sfile->files; | ||||
| struct direntry *file; | struct direntry *file; | ||||
| ImBuf *imb; | ImBuf *imb; | ||||
| uiBlock *block = uiBeginBlock(C, ar, __func__, UI_EMBOSS); | uiBlock *block = UI_block_begin(C, ar, __func__, UI_EMBOSS); | ||||
| int numfiles; | int numfiles; | ||||
| int numfiles_layout; | int numfiles_layout; | ||||
| int sx, sy; | int sx, sy; | ||||
| int offset; | int offset; | ||||
| int textwidth, textheight; | int textwidth, textheight; | ||||
| int i; | int i; | ||||
| bool is_icon; | bool is_icon; | ||||
| short align; | short align; | ||||
| Show All 39 Lines | for (i = offset; (i < numfiles) && (i < offset + numfiles_layout); i++) { | ||||
| if (!(file->selflag & EDITING_FILE)) { | if (!(file->selflag & EDITING_FILE)) { | ||||
| if ((params->active_file == i) || (file->selflag & HILITED_FILE) || (file->selflag & SELECTED_FILE)) { | if ((params->active_file == i) || (file->selflag & HILITED_FILE) || (file->selflag & SELECTED_FILE)) { | ||||
| int colorid = (file->selflag & SELECTED_FILE) ? TH_HILITE : TH_BACK; | int colorid = (file->selflag & SELECTED_FILE) ? TH_HILITE : TH_BACK; | ||||
| int shade = (params->active_file == i) || (file->selflag & HILITED_FILE) ? 20 : 0; | int shade = (params->active_file == i) || (file->selflag & HILITED_FILE) ? 20 : 0; | ||||
| draw_tile(sx, sy - 1, layout->tile_w + 4, sfile->layout->tile_h + layout->tile_border_y, colorid, shade); | draw_tile(sx, sy - 1, layout->tile_w + 4, sfile->layout->tile_h + layout->tile_border_y, colorid, shade); | ||||
| } | } | ||||
| } | } | ||||
| uiSetRoundBox(UI_CNR_NONE); | UI_draw_roundbox_corner_set(UI_CNR_NONE); | ||||
| /* don't drag parent or refresh items */ | /* don't drag parent or refresh items */ | ||||
| do_drag = !(STREQ(file->relname, "..") || STREQ(file->relname, ".")); | do_drag = !(STREQ(file->relname, "..") || STREQ(file->relname, ".")); | ||||
| if (FILE_IMGDISPLAY == params->display) { | if (FILE_IMGDISPLAY == params->display) { | ||||
| is_icon = 0; | is_icon = 0; | ||||
| imb = filelist_getimage(files, i); | imb = filelist_getimage(files, i); | ||||
| if (!imb) { | if (!imb) { | ||||
| Show All 22 Lines | if (file->selflag & EDITING_FILE) { | ||||
| layout->column_widths[COLUMN_MODE2] + layout->column_widths[COLUMN_MODE3] + | layout->column_widths[COLUMN_MODE2] + layout->column_widths[COLUMN_MODE3] + | ||||
| (column_space * 3.5f); | (column_space * 3.5f); | ||||
| } | } | ||||
| else { | else { | ||||
| BLI_assert(params->display == FILE_IMGDISPLAY); | BLI_assert(params->display == FILE_IMGDISPLAY); | ||||
| width = textwidth; | width = textwidth; | ||||
| } | } | ||||
| but = uiDefBut(block, TEX, 1, "", sx, sy - layout->tile_h - 0.15f * UI_UNIT_X, | but = uiDefBut(block, UI_BTYPE_TEXT, 1, "", sx, sy - layout->tile_h - 0.15f * UI_UNIT_X, | ||||
| width, textheight, sfile->params->renameedit, 1.0f, (float)sizeof(sfile->params->renameedit), 0, 0, ""); | width, textheight, sfile->params->renameedit, 1.0f, (float)sizeof(sfile->params->renameedit), 0, 0, ""); | ||||
| uiButSetRenameFunc(but, renamebutton_cb, file); | UI_but_func_rename_set(but, renamebutton_cb, file); | ||||
| uiButSetFlag(but, UI_BUT_NO_UTF8); /* allow non utf8 names */ | UI_but_flag_enable(but, UI_BUT_NO_UTF8); /* allow non utf8 names */ | ||||
| uiButClearFlag(but, UI_BUT_UNDO); | UI_but_flag_disable(but, UI_BUT_UNDO); | ||||
| if (false == uiButActiveOnly(C, ar, block, but)) { | if (false == UI_but_active_only(C, ar, block, but)) { | ||||
| file->selflag &= ~EDITING_FILE; | file->selflag &= ~EDITING_FILE; | ||||
| } | } | ||||
| } | } | ||||
| if (!(file->selflag & EDITING_FILE)) { | if (!(file->selflag & EDITING_FILE)) { | ||||
| int tpos = (FILE_IMGDISPLAY == params->display) ? sy - layout->tile_h + layout->textheight : sy; | int tpos = (FILE_IMGDISPLAY == params->display) ? sy - layout->tile_h + layout->textheight : sy; | ||||
| file_draw_string(sx + 1, tpos, file->relname, (float)textwidth, textheight, align); | file_draw_string(sx + 1, tpos, file->relname, (float)textwidth, textheight, align); | ||||
| } | } | ||||
| Show All 31 Lines | #endif | ||||
| if (!(file->type & S_IFDIR)) { | if (!(file->type & S_IFDIR)) { | ||||
| file_draw_string(sx, sy, file->size, layout->column_widths[COLUMN_SIZE], layout->tile_h, align); | file_draw_string(sx, sy, file->size, layout->column_widths[COLUMN_SIZE], layout->tile_h, align); | ||||
| sx += (int)layout->column_widths[COLUMN_SIZE] + column_space; | sx += (int)layout->column_widths[COLUMN_SIZE] + column_space; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| uiEndBlock(C, block); | UI_block_end(C, block); | ||||
| uiDrawBlock(C, block); | UI_block_draw(C, block); | ||||
| } | } | ||||