Some more action editor marker bugfixes:

* (De)select all markers now works normally
* RMB click-drag in action editor when no markers caused segfault
This commit is contained in:
Joshua Leung 2006-11-16 09:48:53 +00:00
parent 1e00c59c23
commit 7b71b524ed
3 changed files with 40 additions and 16 deletions

View File

@ -84,14 +84,16 @@ void clean_actionchannels(struct bAction *act);
/* Marker Operations */
struct ListBase *get_saction_markers(struct SpaceAction *saction);
struct TimeMarker *find_nearest_saction_marker(struct ListBase *markers);
void add_saction_marker(struct ListBase *markers, int frame);
void duplicate_saction_markers(struct ListBase *markers);
void remove_saction_markers(struct ListBase *markers);
void rename_saction_markers(struct ListBase *markers);
void transform_saction_markers(int mode, int smode);
void deselect_saction_markers(struct ListBase *markers, int test, int selectmode);
void deselect_saction_markers(struct ListBase *markers, int test, int sel);
void borderselect_saction_markers(struct ListBase *markers, float xmin, float xmax, int selectmode);
struct TimeMarker *find_nearest_saction_marker(struct ListBase *markers);
void selectkeyscolumns_saction_markers(struct ListBase *markers);
void selectkeysbetween_saction_markers(struct ListBase *markers);
/* channel/strip operations */
void up_sel_action(void);

View File

@ -3109,6 +3109,9 @@ TimeMarker *find_nearest_saction_marker(ListBase *markers)
rctf rectf;
short mval[2];
if (markers == NULL)
return NULL;
getmouseco_areawin (mval);
mval[0]-=7;
@ -3137,10 +3140,10 @@ void deselect_saction_markers(ListBase *markers, int test, int sel)
if (test) {
/* dependant on existing selection */
/* determine if select all or deselect all */
sel = 0;
sel = 1;
for (marker= markers->first; marker; marker= marker->next) {
if ((marker->flag & SELECT)==0) {
sel = 1;
if (marker->flag & SELECT) {
sel = 0;
break;
}
}

View File

@ -85,11 +85,13 @@
#define ACTMENU_VIEW_LOCK 6
#define ACTMENU_VIEW_SLIDERS 7
#define ACTMENU_SEL_BORDER 0
#define ACTMENU_SEL_ALL_KEYS 1
#define ACTMENU_SEL_ALL_CHAN 2
#define ACTMENU_SEL_COLUMN 3
#define ACTMENU_SEL_ALL_MARKERS 4
#define ACTMENU_SEL_BORDER 0
#define ACTMENU_SEL_ALL_KEYS 1
#define ACTMENU_SEL_ALL_CHAN 2
#define ACTMENU_SEL_COLUMN 3
#define ACTMENU_SEL_ALL_MARKERS 4
#define ACTMENU_SEL_MARKERS_KEYSBETWEEN 5
#define ACTMENU_SEL_MARKERS_KEYSCOLUMN 6
#define ACTMENU_KEY_DUPLICATE 0
#define ACTMENU_KEY_DELETE 1
@ -379,10 +381,6 @@ static void do_action_selectmenu(void *arg, int event)
allqueue(REDRAWNLA, 0);
allqueue (REDRAWIPO, 0);
break;
case ACTMENU_SEL_COLUMN:
addqueue (curarea->win, KKEY, 1);
break;
case ACTMENU_SEL_ALL_MARKERS: /* select/deselect all markers */
if (markers != NULL) {
@ -391,6 +389,16 @@ static void do_action_selectmenu(void *arg, int event)
allqueue(REDRAWTIME, 0);
}
break;
case ACTMENU_SEL_COLUMN: /* select column */
addqueue (curarea->win, KKEY, 1);
break;
case ACTMENU_SEL_MARKERS_KEYSBETWEEN: /* keys between 2 extreme selected markers */
break;
case ACTMENU_SEL_MARKERS_KEYSCOLUMN: /* keys on same frame as marker(s) */
break;
}
}
@ -428,10 +436,21 @@ static uiBlock *action_selectmenu(void *arg_unused)
menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
"Select Column|K", 0, yco-=20,
"Select Keys Column|K", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 0,
ACTMENU_SEL_COLUMN, "");
/*
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
"Select Keys At Markers|CTRL K", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 0,
ACTMENU_SEL_MARKERS_KEYSCOLUMN, "");
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
"Select Keys Between Markers|SHIFT K", 0, yco-=20,
menuwidth, 19, NULL, 0.0, 0.0, 0,
ACTMENU_SEL_MARKERS_KEYSBETWEEN, "");
*/
if(curarea->headertype==HEADERTOP) {
uiBlockSetDirection(block, UI_DOWN);