UI: Confirmations Using Std::String #117519
|
@ -930,10 +930,10 @@ enum wmConfirmPosition {
|
|||
};
|
||||
|
||||
struct wmConfirmDetails {
|
||||
char title[1024];
|
||||
char message[1024];
|
||||
char message2[1024];
|
||||
char confirm_text[256];
|
||||
std::string title;
|
||||
std::string message;
|
||||
std::string message2;
|
||||
std::string confirm_text;
|
||||
int icon;
|
||||
wmConfirmSize size;
|
||||
wmConfirmPosition position;
|
||||
|
|
|
@ -3584,8 +3584,8 @@ static void wm_clear_recent_files_confirm(bContext * /*C*/,
|
|||
wmOperator * /*op*/,
|
||||
wmConfirmDetails *confirm)
|
||||
{
|
||||
STRNCPY(confirm->message, IFACE_("Remove all items from the recent files list"));
|
||||
STRNCPY(confirm->confirm_text, IFACE_("Remove All"));
|
||||
confirm->message = IFACE_("Remove all items from the recent files list");
|
||||
confirm->confirm_text = IFACE_("Remove All");
|
||||
confirm->position = WM_WARNING_POSITION_CENTER;
|
||||
confirm->size = WM_WARNING_SIZE_LARGE;
|
||||
confirm->cancel_default = true;
|
||||
|
|
|
@ -1217,8 +1217,8 @@ static uiBlock *wm_block_confirm_create(bContext *C, ARegion *region, void *arg_
|
|||
|
||||
wmConfirmDetails confirm = {{0}};
|
||||
|
||||
STRNCPY(confirm.title, WM_operatortype_description(C, op->type, op->ptr).c_str());
|
||||
STRNCPY(confirm.confirm_text, WM_operatortype_name(op->type, op->ptr).c_str());
|
||||
confirm.title = WM_operatortype_description(C, op->type, op->ptr);
|
||||
confirm.confirm_text = WM_operatortype_name(op->type, op->ptr);
|
||||
confirm.icon = ALERT_ICON_WARNING;
|
||||
confirm.size = WM_WARNING_SIZE_SMALL;
|
||||
confirm.position = WM_WARNING_POSITION_MOUSE;
|
||||
|
@ -1245,21 +1245,23 @@ static uiBlock *wm_block_confirm_create(bContext *C, ARegion *region, void *arg_
|
|||
const uiStyle *style = UI_style_get_dpi();
|
||||
int text_width = std::max(
|
||||
120 * UI_SCALE_FAC,
|
||||
BLF_width(style->widget.uifont_id, confirm.title, ARRAY_SIZE(confirm.title)));
|
||||
if (confirm.message[0]) {
|
||||
text_width = std::max(
|
||||
text_width,
|
||||
int(BLF_width(style->widget.uifont_id, confirm.message, ARRAY_SIZE(confirm.message))));
|
||||
BLF_width(style->widget.uifont_id, confirm.title.c_str(), confirm.title.length()));
|
||||
if (!confirm.message.empty()) {
|
||||
text_width = std::max(text_width,
|
||||
int(BLF_width(style->widget.uifont_id,
|
||||
confirm.message.c_str(),
|
||||
confirm.message.length())));
|
||||
}
|
||||
if (confirm.message2[0]) {
|
||||
text_width = std::max(
|
||||
text_width,
|
||||
int(BLF_width(style->widget.uifont_id, confirm.message2, ARRAY_SIZE(confirm.message2))));
|
||||
if (!confirm.message2.empty()) {
|
||||
text_width = std::max(text_width,
|
||||
int(BLF_width(style->widget.uifont_id,
|
||||
confirm.message2.c_str(),
|
||||
confirm.message2.length())));
|
||||
}
|
||||
|
||||
const bool small = confirm.size == WM_WARNING_SIZE_SMALL;
|
||||
const int padding = (small ? 7 : 14) * UI_SCALE_FAC;
|
||||
const short icon_size = (small ? (confirm.message[0] ? 48 : 32) : 64) * UI_SCALE_FAC;
|
||||
const short icon_size = (small ? (confirm.message.empty() ? 32 : 48) : 64) * UI_SCALE_FAC;
|
||||
const int dialog_width = icon_size + text_width + (style->columnspace * 2.5);
|
||||
const float split_factor = (float)icon_size / (float)(dialog_width - style->columnspace);
|
||||
|
||||
|
@ -1278,17 +1280,19 @@ static uiBlock *wm_block_confirm_create(bContext *C, ARegion *region, void *arg_
|
|||
/* The rest of the content on the right. */
|
||||
layout = uiLayoutColumn(split_block, true);
|
||||
|
||||
if (confirm.title[0]) {
|
||||
if (!confirm.message[0]) {
|
||||
if (!confirm.title.empty()) {
|
||||
if (confirm.message.empty()) {
|
||||
uiItemS(layout);
|
||||
}
|
||||
uiItemL_ex(layout, confirm.title, ICON_NONE, true, false);
|
||||
uiItemL_ex(layout, confirm.title.c_str(), ICON_NONE, true, false);
|
||||
}
|
||||
if (confirm.message[0]) {
|
||||
uiItemL(layout, confirm.message, ICON_NONE);
|
||||
|
||||
if (!confirm.message.empty()) {
|
||||
uiItemL(layout, confirm.message.c_str(), ICON_NONE);
|
||||
}
|
||||
if (confirm.message2[0]) {
|
||||
uiItemL(layout, confirm.message2, ICON_NONE);
|
||||
|
||||
if (!confirm.message2.empty()) {
|
||||
uiItemL(layout, confirm.message2.c_str(), ICON_NONE);
|
||||
}
|
||||
|
||||
uiItemS_ex(layout, small ? 0.5f : 4.0f);
|
||||
|
@ -1312,7 +1316,7 @@ static uiBlock *wm_block_confirm_create(bContext *C, ARegion *region, void *arg_
|
|||
UI_BTYPE_BUT,
|
||||
0,
|
||||
0,
|
||||
confirm.confirm_text,
|
||||
confirm.confirm_text.c_str(),
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
|
@ -1348,7 +1352,7 @@ static uiBlock *wm_block_confirm_create(bContext *C, ARegion *region, void *arg_
|
|||
UI_BTYPE_BUT,
|
||||
0,
|
||||
0,
|
||||
confirm.confirm_text,
|
||||
confirm.confirm_text.c_str(),
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
|
|
Loading…
Reference in New Issue