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:
-rw-r--r--source/blender/editors/animation/anim_channels_defines.c7
-rw-r--r--source/blender/editors/gpencil/gpencil_paint.c55
2 files changed, 39 insertions, 23 deletions
diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c
index a6d80763718..b2ee2f008f5 100644
--- a/source/blender/editors/animation/anim_channels_defines.c
+++ b/source/blender/editors/animation/anim_channels_defines.c
@@ -2412,11 +2412,8 @@ static bAnimChannelType ACF_SHAPEKEY=
/* get backdrop color for gpencil datablock widget */
static void acf_gpd_color(bAnimContext *UNUSED(ac), bAnimListElem *UNUSED(ale), float *color)
{
- /* highlight only for datablock channels */
- //if (ale->flag & AGRP_ACTIVE)
- // UI_GetThemeColorShade3fv(TH_GROUP_ACTIVE, 10, color);
- //else
- UI_GetThemeColorShade3fv(TH_GROUP, 20, color);
+ /* these are ID-blocks, but not exactly standalone... */
+ UI_GetThemeColorShade3fv(TH_DOPESHEET_CHANNELSUBOB, 20, color);
}
// TODO: just get this from RNA?
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index d5cdb552439..63c28939c21 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -1555,7 +1555,7 @@ static int gpencil_draw_modal (bContext *C, wmOperator *op, wmEvent *event)
//printf("\tGP - handle modal event...\n");
/* exit painting mode (and/or end current stroke) */
- if (ELEM3(event->type, RETKEY, PADENTER, ESCKEY)) {
+ if (ELEM4(event->type, RETKEY, PADENTER, ESCKEY, SPACEKEY)) {
/* exit() ends the current stroke before cleaning up */
//printf("\t\tGP - end of paint op + end of stroke\n");
gpencil_draw_exit(C, op);
@@ -1615,24 +1615,43 @@ static int gpencil_draw_modal (bContext *C, wmOperator *op, wmEvent *event)
}
}
- /* handle painting mouse-movements? */
- if ((p->status == GP_STATUS_PAINTING) &&
- (ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE) || (p->flags & GP_PAINTFLAG_FIRSTRUN)) )
- {
- /* handle drawing event */
- //printf("\t\tGP - add point\n");
- gpencil_draw_apply_event(op, event);
-
- /* finish painting operation if anything went wrong just now */
- if (p->status == GP_STATUS_ERROR) {
- //printf("\t\t\t\tGP - add error done! \n");
- gpencil_draw_exit(C, op);
- estate = OPERATOR_CANCELLED;
+ /* handle mode-specific events */
+ if (p->status == GP_STATUS_PAINTING) {
+ /* handle painting mouse-movements? */
+ if (ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE) || (p->flags & GP_PAINTFLAG_FIRSTRUN))
+ {
+ /* handle drawing event */
+ //printf("\t\tGP - add point\n");
+ gpencil_draw_apply_event(op, event);
+
+ /* finish painting operation if anything went wrong just now */
+ if (p->status == GP_STATUS_ERROR) {
+ //printf("\t\t\t\tGP - add error done! \n");
+ gpencil_draw_exit(C, op);
+ estate = OPERATOR_CANCELLED;
+ }
+ else {
+ /* event handled, so just tag as running modal */
+ //printf("\t\t\t\tGP - add point handled!\n");
+ estate = OPERATOR_RUNNING_MODAL;
+ }
}
- else {
- /* event handled, so just tag as running modal */
- //printf("\t\t\t\tGP - add point handled!\n");
- estate = OPERATOR_RUNNING_MODAL;
+ }
+ else if (p->status == GP_STATUS_IDLING) {
+ /* standard undo/redo shouldn't be allowed to execute or else it causes crashes, so catch it here */
+ // FIXME: this is a hardcoded hotkey that can't be changed
+ // TODO: catch redo as well, but how?
+ if (event->type == ZKEY) {
+ /* oskey = cmd key on macs as they seem to use cmd-z for undo as well? */
+ if ((event->ctrl) || (event->oskey)) {
+ /* just delete last stroke, which will look like undo to the end user */
+ //printf("caught attempted undo event... deleting last stroke \n");
+ gpencil_frame_delete_laststroke(p->gpl, p->gpf);
+
+ /* event handled, so force refresh */
+ ED_region_tag_redraw(p->ar); /* just active area for now, since doing whole screen is too slow */
+ estate = OPERATOR_RUNNING_MODAL;
+ }
}
}