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); this.emit('show-osd', 'document-save-symbolic', name, -1);
if (name != DEFAULT_FILE_NAME) if (name != DEFAULT_FILE_NAME)
this.jsonName = 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); this.emit('show-osd', 'document-open-symbolic', name, -1);
if (name != DEFAULT_FILE_NAME) if (name != DEFAULT_FILE_NAME)
this.jsonName = name; this.jsonName = name;
this.lastJsonContents = contents;
}, },
_loadPersistent: function() { _loadPersistent: function() {
@ -767,6 +769,11 @@ var DrawingArea = new Lang.Class({
this.loadJson(previousName, true); 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() { disable: function() {
this.erase(); this.erase();
this.menu.disable(); this.menu.disable();
@ -1387,7 +1394,8 @@ var DrawingMenu = new Lang.Class({
_updateDrawingNameMenuItem: function() { _updateDrawingNameMenuItem: function() {
getActor(this.drawingNameMenuItem).visible = this.area.jsonName ? true : false; getActor(this.drawingNameMenuItem).visible = this.area.jsonName ? true : false;
if (this.area.jsonName) { 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); this.drawingNameMenuItem.label.get_clutter_text().set_use_markup(true);
} }
}, },