Fix T38885: missing image editor paint brush updates after recent UI changes.
authorBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 28 Feb 2014 17:12:05 +0000 (18:12 +0100)
committerBrecht Van Lommel <brechtvanlommel@gmail.com>
Fri, 28 Feb 2014 17:12:05 +0000 (18:12 +0100)
source/blender/editors/sculpt_paint/paint_image.c
source/blender/editors/space_image/space_image.c

index 56cba57747d6aea11dc71ae189ee3a71d4921ea1..1b2e708be0f598e7951a014643f8812ec2670af9 100644 (file)
@@ -960,6 +960,7 @@ static int sample_color_exec(bContext *C, wmOperator *op)
 static int sample_color_invoke(bContext *C, wmOperator *op, const wmEvent *event)
 {
        Paint *paint = BKE_paint_get_active_from_context(C);
+       Brush *brush = BKE_paint_brush(paint);
        SampleColorData *data = MEM_mallocN(sizeof(SampleColorData), "sample color custom data");
        ARegion *ar = CTX_wm_region(C);
        wmWindow *win = CTX_wm_window(C);
@@ -977,6 +978,7 @@ static int sample_color_invoke(bContext *C, wmOperator *op, const wmEvent *event
        paint_sample_color(C, ar, event->mval[0], event->mval[1]);
 
        WM_event_add_modal_handler(C, op);
+       WM_event_add_notifier(C, NC_BRUSH | NA_EDITED, brush);
 
        return OPERATOR_RUNNING_MODAL;
 }
index e857583924eb90297b43977bb2465200a9d1cd0e..5c9fd233a5cfa206b94112a3f3aa919b111939a0 100644 (file)
@@ -789,20 +789,28 @@ static void image_buttons_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa)
 {
        /* context changes */
        switch (wmn->category) {
-               case NC_GPENCIL:
-                       if (wmn->data == ND_DATA)
-                               ED_region_tag_redraw(ar);
-                       break;
-               case NC_BRUSH:
-                       if (wmn->action == NA_EDITED)
-                               ED_region_tag_redraw(ar);
-                       break;
                case NC_TEXTURE:
                case NC_MATERIAL:
                        /* sending by texture render job and needed to properly update displaying
                         * brush texture icon */
                        ED_region_tag_redraw(ar);
                        break;
+               case NC_SCENE:
+                       switch (wmn->data) {
+                               case ND_MODE:
+                               case ND_RENDER_RESULT:
+                               case ND_COMPO_RESULT:
+                                       ED_region_tag_redraw(ar);
+                                       break;
+                       }
+                       break;
+               case NC_IMAGE:
+                       if (wmn->action != NA_PAINTING)
+                               ED_region_tag_redraw(ar);
+                       break;
+               case NC_NODE:
+                       ED_region_tag_redraw(ar);
+                       break;
        }
 }
 
@@ -850,6 +858,14 @@ static void image_tools_area_listener(bScreen *UNUSED(sc), ScrArea *UNUSED(sa),
 {
        /* context changes */
        switch (wmn->category) {
+               case NC_GPENCIL:
+                       if (wmn->data == ND_DATA)
+                               ED_region_tag_redraw(ar);
+                       break;
+               case NC_BRUSH:
+                       if (wmn->action == NA_EDITED)
+                               ED_region_tag_redraw(ar);
+                       break;
                case NC_SCENE:
                        switch (wmn->data) {
                                case ND_MODE: