Remove item from recents when removing it as a favorite from the ribbon so it doesn't still appear

This commit is contained in:
Quincy Morgan
2019-03-08 11:21:19 -05:00
parent 48872c45eb
commit 9216c93334
2 changed files with 39 additions and 28 deletions
+18 -8
View File
@@ -380,6 +380,24 @@ export function presetIndex(context) {
setFavorites(favs);
};
all.removeFavorite = function(preset, geometry) {
var item = all.favoriteMatching(preset, geometry);
if (item) {
var items = all.getFavorites();
items.splice(items.indexOf(item), 1);
setFavorites(items);
}
};
all.removeRecent = function(preset, geometry) {
var item = all.recentMatching(preset, geometry);
if (item) {
var items = all.getRecents();
items.splice(items.indexOf(item), 1);
setRecents(items);
}
};
all.favoriteMatching = function(preset, geometry) {
var favs = all.getFavorites();
for (var index in favs) {
@@ -439,14 +457,6 @@ export function presetIndex(context) {
items.unshift(item);
setRecents(items);
};
all.removeRecent = function(preset, geometry) {
var item = all.recentMatching(preset, geometry);
if (item) {
var items = all.getRecents();
items.splice(items.indexOf(item), 1);
setRecents(items);
}
};
return utilRebind(all, dispatch, 'on');
}
+21 -20
View File
@@ -30,6 +30,22 @@ export function uiModes(context) {
return context.editable() && mode && mode.id !== 'save';
}
function toggleMode(d) {
if (!enabled(d)) return;
if (d.button === context.mode().button) {
context.enter(modeBrowse(context));
} else {
if (d.preset &&
// don't set a recent as most recent to avoid reordering buttons
!d.isRecent()) {
context.presets().setMostRecent(d.preset, d.geometry);
}
context.enter(d);
}
}
return function(selection) {
context
@@ -141,16 +157,7 @@ export function uiModes(context) {
if (mode.key) {
context.keybinding().on(mode.key, function() {
if (!enabled(mode)) return;
if (mode.button === context.mode().button) {
context.enter(modeBrowse(context));
} else {
if (mode.preset && mode.isFavorite()) {
context.presets().setMostRecent(mode.preset, mode.geometry);
}
context.enter(mode);
}
toggleMode(mode);
});
}
@@ -176,20 +183,12 @@ export function uiModes(context) {
return classes;
})
.on('click.mode-buttons', function(d) {
if (!enabled(d)) return;
// When drawing, ignore accidental clicks on mode buttons - #4042
var currMode = context.mode().id;
if (/^draw/.test(currMode)) return;
if (d.id === currMode) {
context.enter(modeBrowse(context));
} else {
if (d.preset && d.isFavorite()) {
context.presets().setMostRecent(d.preset, d.geometry);
}
context.enter(d);
}
toggleMode(d);
})
.call(tooltip()
.placement('bottom')
@@ -280,7 +279,9 @@ export function uiModes(context) {
if (y > 50) {
// dragged out of the top bar, remove
if (d.isFavorite()) {
context.presets().toggleFavorite(d.preset, d.geometry);
context.presets().removeFavorite(d.preset, d.geometry);
// also remove this as a recent so it doesn't still appear
context.presets().removeRecent(d.preset, d.geometry);
} else if (d.isRecent()) {
context.presets().removeRecent(d.preset, d.geometry);
}