mirror of
https://github.com/scratchfoundation/paper.js.git
synced 2025-01-03 19:45:44 -05:00
Fix selection behavior when segment lists are cleared, in which case we expect the path to remain selected.
This commit is contained in:
parent
8909216cc0
commit
2f2b3ed7e0
2 changed files with 17 additions and 5 deletions
|
@ -86,7 +86,7 @@ var Path = this.Path = PathItem.extend({
|
||||||
if (!this._segments) {
|
if (!this._segments) {
|
||||||
this._segments = [];
|
this._segments = [];
|
||||||
} else {
|
} else {
|
||||||
this.setSelected(false);
|
this._selectedSegmentState = 0;
|
||||||
this._segments.length = 0;
|
this._segments.length = 0;
|
||||||
// Make sure new curves are calculated next time we call getCurves()
|
// Make sure new curves are calculated next time we call getCurves()
|
||||||
if (this._curves)
|
if (this._curves)
|
||||||
|
@ -644,8 +644,12 @@ var Path = this.Path = PathItem.extend({
|
||||||
|
|
||||||
_updateSelection: function(segment, oldState, newState) {
|
_updateSelection: function(segment, oldState, newState) {
|
||||||
segment._selectionState = newState;
|
segment._selectionState = newState;
|
||||||
this.setSelected(
|
var total = this._selectedSegmentState += newState - oldState;
|
||||||
(this._selectedSegmentState += newState - oldState) > 0);
|
// Set this path as selected in case we have selected segments. Do not
|
||||||
|
// unselect if we're down to 0, as the path itself can still remain
|
||||||
|
// selected even when empty.
|
||||||
|
if (total > 0)
|
||||||
|
this.setSelected(true);
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -108,10 +108,10 @@ test('Is the path deselected after setting a new list of segments?', function()
|
||||||
path.segments = [[0, 10]];
|
path.segments = [[0, 10]];
|
||||||
equals(function() {
|
equals(function() {
|
||||||
return path.selected;
|
return path.selected;
|
||||||
}, false);
|
}, true);
|
||||||
equals(function() {
|
equals(function() {
|
||||||
return paper.project.selectedItems.length;
|
return paper.project.selectedItems.length;
|
||||||
}, 0);
|
}, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('After setting Path#fullySelected=true on an empty path, subsequent segments should be selected', function() {
|
test('After setting Path#fullySelected=true on an empty path, subsequent segments should be selected', function() {
|
||||||
|
@ -154,7 +154,15 @@ test('After simplifying a path using #simplify(), the path should stay fullySele
|
||||||
path.add(i * 10, 10);
|
path.add(i * 10, 10);
|
||||||
};
|
};
|
||||||
path.fullySelected = true;
|
path.fullySelected = true;
|
||||||
|
equals(function() {
|
||||||
|
return path.selected;
|
||||||
|
}, true);
|
||||||
|
|
||||||
path.simplify();
|
path.simplify();
|
||||||
|
|
||||||
|
equals(function() {
|
||||||
|
return path.selected;
|
||||||
|
}, true);
|
||||||
equals(function() {
|
equals(function() {
|
||||||
return path.fullySelected;
|
return path.fullySelected;
|
||||||
}, true);
|
}, true);
|
||||||
|
|
Loading…
Reference in a new issue