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
path: root/source
diff options
context:
space:
mode:
authorHarley Acheson <harley.acheson@gmail.com>2021-02-08 19:19:23 +0300
committerHarley Acheson <harley.acheson@gmail.com>2021-02-08 19:19:23 +0300
commit694bc4d040a8bf762284598e98bf0575549a3e1c (patch)
tree0e4d95baac18731e0ab5a135acf5eff6f8b53432 /source
parent21a2b975b8192c2714625c8f5e98a08fde796ba7 (diff)
Fix for T84038: Improved Report Warnings
Improved contrast for Status Bar report warning messages. Differential Revision: https://developer.blender.org/D10242 Reviewed by Hans Goudey
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenloader/intern/versioning_userdef.c9
-rw-r--r--source/blender/editors/include/UI_interface.h2
-rw-r--r--source/blender/editors/interface/interface_templates.c73
-rw-r--r--source/blender/editors/interface/interface_utils.c67
-rw-r--r--source/blender/editors/interface/interface_widgets.c4
-rw-r--r--source/blender/editors/space_info/info_draw.c46
-rw-r--r--source/blender/editors/space_info/info_ops.c10
-rw-r--r--source/blender/editors/space_info/textview.c2
8 files changed, 125 insertions, 88 deletions
diff --git a/source/blender/blenloader/intern/versioning_userdef.c b/source/blender/blenloader/intern/versioning_userdef.c
index 04f8023351b..3d39181cd32 100644
--- a/source/blender/blenloader/intern/versioning_userdef.c
+++ b/source/blender/blenloader/intern/versioning_userdef.c
@@ -273,6 +273,15 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
{
/* Keep this block, even when empty. */
FROM_DEFAULT_V4_UCHAR(space_properties.active);
+
+ FROM_DEFAULT_V4_UCHAR(space_info.info_error);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_warning);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_info);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_debug);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_debug_text);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_property);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_error);
+ FROM_DEFAULT_V4_UCHAR(space_info.info_operator);
}
#undef FROM_DEFAULT_V4_UCHAR
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index bc053f60ca3..066d262cc44 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -1413,6 +1413,8 @@ enum {
int UI_icon_from_id(struct ID *id);
int UI_icon_from_report_type(int type);
+int UI_icon_colorid_from_report_type(int type);
+int UI_text_colorid_from_report_type(int type);
int UI_icon_from_event_type(short event_type, short event_value);
int UI_icon_from_keymap_item(const struct wmKeyMapItem *kmi, int r_icon_mod[4]);
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index cf0c1444d4d..dad8253d101 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -6831,20 +6831,16 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
width = min_ii((int)(rti->widthfac * width), width);
width = max_ii(width, 10 * UI_DPI_FAC);
- /* make a box around the report to make it stand out */
UI_block_align_begin(block);
- but = uiDefBut(
- block, UI_BTYPE_ROUNDBOX, 0, "", 0, 0, UI_UNIT_X + 5, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "");
- /* set the report's bg color in but->col - UI_BTYPE_ROUNDBOX feature */
- rgba_float_to_uchar(but->col, rti->col);
+ /* Background for icon. */
but = uiDefBut(block,
UI_BTYPE_ROUNDBOX,
0,
"",
- UI_UNIT_X + 5,
0,
- UI_UNIT_X + width,
+ 0,
+ UI_UNIT_X + (6 * UI_DPI_FAC),
UI_UNIT_Y,
NULL,
0.0f,
@@ -6852,46 +6848,57 @@ void uiTemplateReportsBanner(uiLayout *layout, bContext *C)
0,
0,
"");
- rgba_float_to_uchar(but->col, rti->col);
+ /* UI_BTYPE_ROUNDBOX's bg color is set in but->col. */
+ UI_GetThemeColorType4ubv(UI_icon_colorid_from_report_type(report->type), SPACE_INFO, but->col);
- UI_block_align_end(block);
+ /* Background for the rest of the message. */
+ but = uiDefBut(block,
+ UI_BTYPE_ROUNDBOX,
+ 0,
+ "",
+ UI_UNIT_X + (6 * UI_DPI_FAC),
+ 0,
+ UI_UNIT_X + width,
+ UI_UNIT_Y,
+ NULL,
+ 0.0f,
+ 0.0f,
+ 0,
+ 0,
+ "");
- /* icon and report message on top */
- const int icon = UI_icon_from_report_type(report->type);
+ /* Use icon background at low opacity to highlight, but still contrasting with area TH_TEXT. */
+ UI_GetThemeColorType4ubv(UI_icon_colorid_from_report_type(report->type), SPACE_INFO, but->col);
+ but->col[3] = 64;
- /* XXX: temporary operator to dump all reports to a text block, but only if more than 1 report
- * to be shown instead of icon when appropriate...
- */
+ UI_block_align_end(block);
UI_block_emboss_set(block, UI_EMBOSS_NONE);
- if (reports->list.first != reports->list.last) {
- uiDefIconButO(block,
- UI_BTYPE_BUT,
- "SCREEN_OT_info_log_show",
- WM_OP_INVOKE_REGION_WIN,
- icon,
- 2,
- 0,
- UI_UNIT_X,
- UI_UNIT_Y,
- TIP_("Click to see the remaining reports in text block: 'Recent Reports'"));
- }
- else {
- uiDefIconBut(
- block, UI_BTYPE_LABEL, 0, icon, 2, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "");
- }
+ /* The report icon itself. */
+ but = uiDefIconButO(block,
+ UI_BTYPE_BUT,
+ "SCREEN_OT_info_log_show",
+ WM_OP_INVOKE_REGION_WIN,
+ UI_icon_from_report_type(report->type),
+ (3 * UI_DPI_FAC),
+ 0,
+ UI_UNIT_X,
+ UI_UNIT_Y,
+ TIP_("Click to see the remaining reports in text block: 'Recent Reports'"));
+ UI_GetThemeColorType4ubv(UI_text_colorid_from_report_type(report->type), SPACE_INFO, but->col);
+ but->col[3] = 255; /* This theme color is RBG only, so have to set alpha here. */
+ /* The report message. */
but = uiDefButO(block,
UI_BTYPE_BUT,
"SCREEN_OT_info_log_show",
WM_OP_INVOKE_REGION_WIN,
report->message,
- UI_UNIT_X + 5,
+ UI_UNIT_X,
0,
- UI_UNIT_X + width,
+ width + UI_UNIT_X,
UI_UNIT_Y,
"Show in Info Log");
- rgba_float_to_uchar(but->col, rti->col);
}
void uiTemplateInputStatus(uiLayout *layout, struct bContext *C)
diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c
index 958a0bc03cd..f9eba9eeb6f 100644
--- a/source/blender/editors/interface/interface_utils.c
+++ b/source/blender/editors/interface/interface_utils.c
@@ -544,15 +544,74 @@ int UI_icon_from_id(ID *id)
int UI_icon_from_report_type(int type)
{
if (type & RPT_ERROR_ALL) {
- return ICON_ERROR;
+ return ICON_CANCEL;
}
- if (type & RPT_WARNING_ALL) {
+ else if (type & RPT_WARNING_ALL) {
return ICON_ERROR;
}
- if (type & RPT_INFO_ALL) {
+ else if (type & RPT_INFO_ALL) {
return ICON_INFO;
}
- return ICON_NONE;
+ else if (type & RPT_DEBUG_ALL) {
+ return ICON_SYSTEM;
+ }
+ else if (type & RPT_PROPERTY) {
+ return ICON_OPTIONS;
+ }
+ else if (type & RPT_OPERATOR) {
+ return ICON_CHECKMARK;
+ }
+ return ICON_INFO;
+}
+
+int UI_icon_colorid_from_report_type(int type)
+{
+ if (type & RPT_ERROR_ALL) {
+ return TH_INFO_ERROR;
+ }
+ else if (type & RPT_WARNING_ALL) {
+ return TH_INFO_WARNING;
+ }
+ else if (type & RPT_INFO_ALL) {
+ return TH_INFO_INFO;
+ }
+ else if (type & RPT_DEBUG_ALL) {
+ return TH_INFO_DEBUG;
+ }
+ else if (type & RPT_PROPERTY) {
+ return TH_INFO_PROPERTY;
+ }
+ else if (type & RPT_OPERATOR) {
+ return TH_INFO_OPERATOR;
+ }
+ else {
+ return TH_INFO_WARNING;
+ }
+}
+
+int UI_text_colorid_from_report_type(int type)
+{
+ if (type & RPT_ERROR_ALL) {
+ return TH_INFO_ERROR_TEXT;
+ }
+ else if (type & RPT_WARNING_ALL) {
+ return TH_INFO_WARNING_TEXT;
+ }
+ else if (type & RPT_INFO_ALL) {
+ return TH_INFO_INFO_TEXT;
+ }
+ else if (type & RPT_DEBUG_ALL) {
+ return TH_INFO_DEBUG_TEXT;
+ }
+ else if (type & RPT_PROPERTY) {
+ return TH_INFO_PROPERTY_TEXT;
+ }
+ else if (type & RPT_OPERATOR) {
+ return TH_INFO_OPERATOR_TEXT;
+ }
+ else {
+ return TH_INFO_WARNING_TEXT;
+ }
}
/********************************** Misc **************************************/
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 8b185f5dc20..5c59d0edeb5 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -2410,7 +2410,9 @@ static void widget_draw_text_icon(const uiFontStyle *fstyle,
rect->xmin += 0.2f * U.widget_unit;
}
- widget_draw_icon(but, icon, alpha, rect, wcol->text);
+ /* By default icon is the color of text, but can optionally override with but->col. */
+ widget_draw_icon(but, icon, alpha, rect, (but->col[3] != 0) ? but->col : wcol->text);
+
if (show_menu_icon) {
BLI_assert(but->block->content_hints & UI_BLOCK_CONTAINS_SUBMENU_BUT);
widget_draw_submenu_tria(but, rect, wcol);
diff --git a/source/blender/editors/space_info/info_draw.c b/source/blender/editors/space_info/info_draw.c
index dc926587367..f63a5530555 100644
--- a/source/blender/editors/space_info/info_draw.c
+++ b/source/blender/editors/space_info/info_draw.c
@@ -56,47 +56,11 @@ static enum eTextViewContext_LineFlag report_line_data(TextViewContext *tvc,
int shade = (tvc->iter_tmp % 2) ? 4 : -4;
UI_GetThemeColorShade4ubv(bg_id, shade, bg);
- /* Icon color and background depend of report type. */
+ /* Don't show icon on subsequent rows of multirow report. */
+ *r_icon = (tvc->iter_char_begin != 0) ? ICON_NONE : UI_icon_from_report_type(report->type);
- int icon_fg_id;
- int icon_bg_id;
-
- if (tvc->iter_char_begin != 0) {
- *r_icon = ICON_NONE;
- }
- else if (report->type & RPT_ERROR_ALL) {
- icon_fg_id = TH_INFO_ERROR_TEXT;
- icon_bg_id = TH_INFO_ERROR;
- *r_icon = ICON_CANCEL;
- }
- else if (report->type & RPT_WARNING_ALL) {
- icon_fg_id = TH_INFO_WARNING_TEXT;
- icon_bg_id = TH_INFO_WARNING;
- *r_icon = ICON_ERROR;
- }
- else if (report->type & RPT_INFO_ALL) {
- icon_fg_id = TH_INFO_INFO_TEXT;
- icon_bg_id = TH_INFO_INFO;
- *r_icon = ICON_INFO;
- }
- else if (report->type & RPT_DEBUG_ALL) {
- icon_fg_id = TH_INFO_DEBUG_TEXT;
- icon_bg_id = TH_INFO_DEBUG;
- *r_icon = ICON_SYSTEM;
- }
- else if (report->type & RPT_PROPERTY) {
- icon_fg_id = TH_INFO_PROPERTY_TEXT;
- icon_bg_id = TH_INFO_PROPERTY;
- *r_icon = ICON_OPTIONS;
- }
- else if (report->type & RPT_OPERATOR) {
- icon_fg_id = TH_INFO_OPERATOR_TEXT;
- icon_bg_id = TH_INFO_OPERATOR;
- *r_icon = ICON_CHECKMARK;
- }
- else {
- *r_icon = ICON_NONE;
- }
+ int icon_fg_id = UI_text_colorid_from_report_type(report->type);
+ int icon_bg_id = UI_icon_colorid_from_report_type(report->type);
if (report->flag & SELECT) {
icon_fg_id = TH_INFO_SELECTED;
@@ -105,6 +69,8 @@ static enum eTextViewContext_LineFlag report_line_data(TextViewContext *tvc,
if (*r_icon != ICON_NONE) {
UI_GetThemeColor4ubv(icon_fg_id, r_icon_fg);
+ /* This theme color is RGB only, so set alpha. */
+ r_icon_fg[3] = 255;
UI_GetThemeColor4ubv(icon_bg_id, r_icon_bg);
return TVC_LINE_FG | TVC_LINE_BG | TVC_LINE_ICON | TVC_LINE_ICON_FG | TVC_LINE_ICON_BG;
}
diff --git a/source/blender/editors/space_info/info_ops.c b/source/blender/editors/space_info/info_ops.c
index 3bd23eab836..b6d47b74fdc 100644
--- a/source/blender/editors/space_info/info_ops.c
+++ b/source/blender/editors/space_info/info_ops.c
@@ -567,15 +567,7 @@ static int update_reports_display_invoke(bContext *C, wmOperator *UNUSED(op), co
}
/* set target color based on report type */
- if (report->type & RPT_ERROR_ALL) {
- UI_GetThemeColorType3fv(TH_INFO_ERROR, SPACE_INFO, target_col);
- }
- else if (report->type & RPT_WARNING_ALL) {
- UI_GetThemeColorType3fv(TH_INFO_WARNING, SPACE_INFO, target_col);
- }
- else if (report->type & RPT_INFO_ALL) {
- UI_GetThemeColorType3fv(TH_INFO_INFO, SPACE_INFO, target_col);
- }
+ UI_GetThemeColorType3fv(UI_icon_colorid_from_report_type(report->type), SPACE_INFO, target_col);
target_col[3] = 0.65f;
if (rti->widthfac == 0.0f) {
diff --git a/source/blender/editors/space_info/textview.c b/source/blender/editors/space_info/textview.c
index ef5d9c0aab0..aef59e89325 100644
--- a/source/blender/editors/space_info/textview.c
+++ b/source/blender/editors/space_info/textview.c
@@ -225,7 +225,7 @@ static bool textview_draw_string(TextViewDrawState *tds,
rgba_uchar_to_float(col, icon_bg);
UI_draw_roundbox_corner_set(UI_CNR_ALL);
- UI_draw_roundbox_aa(
+ UI_draw_roundbox_4fv(
&(const rctf){
.xmin = hpadding,
.xmax = bg_size + hpadding,