Fix: GPencil Paste couldn't be used to paste strokes from one datablock to another
authorJoshua Leung <aligorith@gmail.com>
Mon, 29 Aug 2016 04:27:23 +0000 (16:27 +1200)
committerJoshua Leung <aligorith@gmail.com>
Mon, 29 Aug 2016 04:27:23 +0000 (16:27 +1200)
This was because the poll callback was checking for the presence of an active layer.
If you just create an empty datablock and try to paste, nothing would happen.

However, this check was kindof redundant anyway, as the operator would add a layer for
you if it didn't find one.

source/blender/editors/gpencil/gpencil_edit.c

index d308d3ae5f1d1fcfb7fe078315de86a38c562f13..a80600fb60cc8a2987c9f67a1d5aadfe4673f320 100644 (file)
@@ -432,10 +432,12 @@ void GPENCIL_OT_copy(wmOperatorType *ot)
 
 static int gp_strokes_paste_poll(bContext *C)
 {
-       /* 1) Must have GP layer to paste to...
+       /* 1) Must have GP datablock to paste to
+        *    - We don't need to have an active layer though, as that can easily get added
+        *    - If the active layer is locked, we can't paste there, but that should prompt a warning instead
         * 2) Copy buffer must at least have something (though it may be the wrong sort...)
         */
-       return (CTX_data_active_gpencil_layer(C) != NULL) && (!BLI_listbase_is_empty(&gp_strokes_copypastebuf));
+       return (ED_gpencil_data_get_active(C) != NULL) && (!BLI_listbase_is_empty(&gp_strokes_copypastebuf));
 }
 
 enum {