* Populate 'Open' and 'Save' submenu on opening. It prevents the 'jump'.
* By removing the previous trick, it now give the key-focus to the first item when opening the menu with 'Menu' key.
This commit is contained in:
abakkk 2020-06-22 14:38:42 +02:00
parent 10384c06e6
commit 64507ba483
1 changed files with 18 additions and 19 deletions

37
draw.js
View File

@ -1965,7 +1965,7 @@ const DrawingMenu = new Lang.Class({
disable: function() { disable: function() {
this.menuManager.removeMenu(this.menu); this.menuManager.removeMenu(this.menu);
Main.layoutManager.uiGroup.remove_actor(this.menu.actor); Main.layoutManager.uiGroup.remove_actor(this.menu.actor);
this.menu.actor.destroy(); this.menu.destroy();
}, },
_onMenuOpenStateChanged: function(menu, open) { _onMenuOpenStateChanged: function(menu, open) {
@ -2238,13 +2238,13 @@ const DrawingMenu = new Lang.Class({
item.menu.close(); item.menu.close();
}; };
GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => { item.menu.openOld = item.menu.open;
this._populateOpenDrawingSubMenu(); item.menu.open = (animate) => {
// small trick to prevent the menu from "jumping" on first opening if (!item.menu.isOpen)
item.menu.open(); this._populateOpenDrawingSubMenu();
item.menu.close(); item.menu.openOld();
return GLib.SOURCE_REMOVE; }
});
menu.addMenuItem(item); menu.addMenuItem(item);
}, },
@ -2273,7 +2273,7 @@ const DrawingMenu = new Lang.Class({
deleteButton.connect('clicked', () => { deleteButton.connect('clicked', () => {
file.delete(); file.delete();
this._populateOpenDrawingSubMenu(); item.destroy();
}); });
}); });
@ -2291,13 +2291,12 @@ const DrawingMenu = new Lang.Class({
item.menu.close(); item.menu.close();
}; };
GLib.idle_add(GLib.PRIORITY_DEFAULT_IDLE, () => { item.menu.openOld = item.menu.open;
this._populateSaveDrawingSubMenu(); item.menu.open = (animate) => {
// small trick to prevent the menu from "jumping" on first opening if (!item.menu.isOpen)
item.menu.open(); this._populateSaveDrawingSubMenu();
item.menu.close(); item.menu.openOld();
return GLib.SOURCE_REMOVE; }
});
menu.addMenuItem(item); menu.addMenuItem(item);
}, },
@ -2306,16 +2305,16 @@ const DrawingMenu = new Lang.Class({
}, },
_populateSaveDrawingSubMenu: function() { _populateSaveDrawingSubMenu: function() {
this.saveEntry = new DrawingMenuEntry({ initialTextGetter: getDateString, this.saveDrawingSubMenu.removeAll();
let saveEntry = new DrawingMenuEntry({ initialTextGetter: getDateString,
entryActivateCallback: (text) => { entryActivateCallback: (text) => {
this.area.saveAsJsonWithName(text); this.area.saveAsJsonWithName(text);
this.saveDrawingSubMenu.toggle(); this.saveDrawingSubMenu.toggle();
this._updateDrawingNameMenuItem(); this._updateDrawingNameMenuItem();
this._populateOpenDrawingSubMenu();
}, },
invalidStrings: [Me.metadata['persistent-file-name'], '/'], invalidStrings: [Me.metadata['persistent-file-name'], '/'],
primaryIconName: 'insert-text' }); primaryIconName: 'insert-text' });
this.saveDrawingSubMenu.addMenuItem(this.saveEntry.item); this.saveDrawingSubMenu.addMenuItem(saveEntry.item);
}, },
_addSeparator: function(menu) { _addSeparator: function(menu) {