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:
Diffstat (limited to 'source/blender/editors/interface/interface_widgets.c')
-rw-r--r--source/blender/editors/interface/interface_widgets.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index 71629d6297c..f654fbcdc1e 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -106,6 +106,7 @@ typedef enum {
UI_WTYPE_SCROLL,
UI_WTYPE_LISTITEM,
UI_WTYPE_PROGRESSBAR,
+ UI_WTYPE_NODESOCKET,
} uiWidgetTypeEnum;
/* Button state argument shares bits with 'uiBut.flag'.
@@ -3624,6 +3625,41 @@ static void widget_progressbar(
rect->xmax += (BLI_rcti_size_x(&rect_prog) / 2);
}
+static void widget_nodesocket(
+ uiBut *but, uiWidgetColors *wcol, rcti *rect, int UNUSED(state), int UNUSED(roundboxalign))
+{
+ uiWidgetBase wtb;
+ int radi = 5;
+ char old_inner[3], old_outline[3];
+
+ widget_init(&wtb);
+
+ copy_v3_v3_char(old_inner, wcol->inner);
+ copy_v3_v3_char(old_outline, wcol->outline);
+
+ wcol->inner[0] = but->col[0];
+ wcol->inner[1] = but->col[1];
+ wcol->inner[2] = but->col[2];
+ wcol->outline[0] = 0;
+ wcol->outline[1] = 0;
+ wcol->outline[2] = 0;
+ wcol->outline[3] = 150;
+
+ int cent_x = BLI_rcti_cent_x(rect);
+ int cent_y = BLI_rcti_cent_y(rect);
+ rect->xmin = cent_x - radi;
+ rect->xmax = cent_x + radi;
+ rect->ymin = cent_y - radi;
+ rect->ymax = cent_y + radi;
+
+ wtb.draw_outline = true;
+ round_box_edges(&wtb, UI_CNR_ALL, rect, (float)radi);
+ widgetbase_draw(&wtb, wcol);
+
+ copy_v3_v3_char(wcol->inner, old_inner);
+ copy_v3_v3_char(wcol->outline, old_outline);
+}
+
static void widget_numslider(
uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign)
{
@@ -4376,6 +4412,10 @@ static uiWidgetType *widget_type(uiWidgetTypeEnum type)
wt.custom = widget_progressbar;
break;
+ case UI_WTYPE_NODESOCKET:
+ wt.custom = widget_nodesocket;
+ break;
+
case UI_WTYPE_MENU_ITEM_RADIAL:
wt.wcol_theme = &btheme->tui.wcol_pie_menu;
wt.custom = widget_menu_radial_itembut;
@@ -4698,7 +4738,7 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct
break;
case UI_BTYPE_NODE_SOCKET:
- ui_draw_but_NODESOCKET(ar, but, &tui->wcol_regular, rect);
+ wt = widget_type(UI_WTYPE_NODESOCKET);
break;
default: