Add asterisk to the drawing name item if the drawing has changed since last save or open operation

This commit is contained in:
abakkk 2020-01-04 12:50:43 +01:00
parent 17bbe345af
commit ec2348b1ec
1 changed files with 9 additions and 1 deletions

10
draw.js
View File

@ -701,6 +701,7 @@ var DrawingArea = new Lang.Class({
this.emit('show-osd', 'document-save-symbolic', name, -1);
if (name != DEFAULT_FILE_NAME)
this.jsonName = name;
this.lastJsonContents = contents;
}
},
@ -733,6 +734,7 @@ var DrawingArea = new Lang.Class({
this.emit('show-osd', 'document-open-symbolic', name, -1);
if (name != DEFAULT_FILE_NAME)
this.jsonName = name;
this.lastJsonContents = contents;
},
_loadPersistent: function() {
@ -767,6 +769,11 @@ var DrawingArea = new Lang.Class({
this.loadJson(previousName, true);
},
get drawingContentsHasChanged() {
let contents = `[\n ` + new Array(...this.elements.map(element => JSON.stringify(element))).join(`,\n\n `) + `\n]`;
return contents != this.lastJsonContents;
},
disable: function() {
this.erase();
this.menu.disable();
@ -1387,7 +1394,8 @@ var DrawingMenu = new Lang.Class({
_updateDrawingNameMenuItem: function() {
getActor(this.drawingNameMenuItem).visible = this.area.jsonName ? true : false;
if (this.area.jsonName) {
this.drawingNameMenuItem.label.set_text(`<i>${this.area.jsonName}</i>`);
let prefix = this.area.drawingContentsHasChanged ? "* " : "";
this.drawingNameMenuItem.label.set_text(`<i>${prefix}${this.area.jsonName}</i>`);
this.drawingNameMenuItem.label.get_clutter_text().set_use_markup(true);
}
},