Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
94eba47358 | ||
|
|
d34933de0b | ||
|
|
9410bdfad6 | ||
|
|
d424b0f645 | ||
|
|
c0454db0c6 | ||
|
|
913b2ba691 | ||
|
|
ba51869b93 | ||
|
|
ffe6110ea9 |
20
NEWS
20
NEWS
@@ -1,3 +1,23 @@
|
||||
3.30.1
|
||||
======
|
||||
* apps-menu: Fix height on HiDPI systems [Florian; #102]
|
||||
* window-list: Only switch between windows on active workspace when scrolling
|
||||
[Florian; #78]
|
||||
|
||||
Contributors:
|
||||
Florian Müllner
|
||||
|
||||
3.30.0
|
||||
======
|
||||
* Bump version
|
||||
|
||||
3.29.91
|
||||
=======
|
||||
* Misc. bug fixes [Florian; #90]
|
||||
|
||||
Contributors:
|
||||
Florian Müllner
|
||||
|
||||
3.29.90
|
||||
=======
|
||||
* Misc. bug fixes [Florian; #786496]
|
||||
|
||||
Submodule data/gnome-shell-sass updated: 7d56794aab...6687e7d3d4
@@ -685,7 +685,10 @@ class ApplicationsButton extends PanelMenu.Button {
|
||||
//Load applications
|
||||
this._displayButtons(this._listApplications(null));
|
||||
|
||||
let height = this.categoriesBox.height + MENU_HEIGHT_OFFSET + 'px';
|
||||
let themeContext = St.ThemeContext.get_for_stage(global.stage);
|
||||
let scaleFactor = themeContext.scale_factor;
|
||||
let categoriesHeight = this.categoriesBox.height / scaleFactor;
|
||||
let height = Math.round(categoriesHeight) + MENU_HEIGHT_OFFSET + 'px';
|
||||
this.mainBox.style+=('height: ' + height);
|
||||
}
|
||||
|
||||
|
||||
@@ -50,33 +50,35 @@ class PlaceInfo {
|
||||
return (_ignored, result) => {
|
||||
try {
|
||||
Gio.AppInfo.launch_default_for_uri_finish(result);
|
||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
|
||||
let source = {
|
||||
get_icon: () => { return this.icon; }
|
||||
};
|
||||
let op = new ShellMountOperation.ShellMountOperation(source);
|
||||
this.file.mount_enclosing_volume(0, op.mountOp, null, (file, result) => {
|
||||
try {
|
||||
op.close();
|
||||
file.mount_enclosing_volume_finish(result);
|
||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED)) {
|
||||
// e.g. user canceled the password dialog
|
||||
return;
|
||||
} catch(e) {
|
||||
Main.notifyError(_("Failed to mount volume for “%s”").format(this.name), e.message);
|
||||
return;
|
||||
}
|
||||
|
||||
if (tryMount) {
|
||||
let callback = this._createLaunchCallback(launchContext, false);
|
||||
Gio.AppInfo.launch_default_for_uri_async(file.get_uri(),
|
||||
launchContext,
|
||||
null,
|
||||
callback);
|
||||
}
|
||||
});
|
||||
} catch(e) {
|
||||
Main.notifyError(_("Failed to launch “%s”").format(this.name), e.message);
|
||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_MOUNTED)) {
|
||||
let source = {
|
||||
get_icon: () => { return this.icon; }
|
||||
};
|
||||
let op = new ShellMountOperation.ShellMountOperation(source);
|
||||
this.file.mount_enclosing_volume(0, op.mountOp, null, (file, result) => {
|
||||
try {
|
||||
op.close();
|
||||
file.mount_enclosing_volume_finish(result);
|
||||
} catch(e) {
|
||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.FAILED_HANDLED))
|
||||
// e.g. user canceled the password dialog
|
||||
return;
|
||||
Main.notifyError(_("Failed to mount volume for “%s”").format(this.name), e.message);
|
||||
return;
|
||||
}
|
||||
|
||||
if (tryMount) {
|
||||
let callback = this._createLaunchCallback(launchContext, false);
|
||||
Gio.AppInfo.launch_default_for_uri_async(file.get_uri(),
|
||||
launchContext,
|
||||
null,
|
||||
callback);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Main.notifyError(_("Failed to launch “%s”").format(this.name), e.message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -97,8 +99,10 @@ class PlaceInfo {
|
||||
let info = file.query_info_finish(result);
|
||||
this.icon = info.get_symbolic_icon();
|
||||
this.emit('changed');
|
||||
} catch(e if e instanceof Gio.IOErrorEnum) {
|
||||
return;
|
||||
} catch(e) {
|
||||
if (e instanceof Gio.IOErrorEnum)
|
||||
return;
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
|
||||
@@ -123,8 +127,10 @@ class PlaceInfo {
|
||||
try {
|
||||
let info = this.file.query_info('standard::display-name', 0, null);
|
||||
return info.get_display_name();
|
||||
} catch(e if e instanceof Gio.IOErrorEnum) {
|
||||
return this.file.get_basename();
|
||||
} catch(e) {
|
||||
if (e instanceof Gio.IOErrorEnum)
|
||||
return this.file.get_basename();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -349,8 +355,10 @@ var PlacesManager = class {
|
||||
let file = Gio.File.new_for_path(specialPath), info;
|
||||
try {
|
||||
info = new PlaceInfo('special', file);
|
||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
|
||||
continue;
|
||||
} catch(e) {
|
||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||
continue;
|
||||
throw e;
|
||||
}
|
||||
|
||||
specials.push(info);
|
||||
@@ -514,8 +522,10 @@ var PlacesManager = class {
|
||||
|
||||
try {
|
||||
devItem = new PlaceDeviceInfo(kind, mount);
|
||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
|
||||
return;
|
||||
} catch(e) {
|
||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||
return;
|
||||
throw e;
|
||||
}
|
||||
|
||||
this._places[kind].push(devItem);
|
||||
@@ -526,8 +536,10 @@ var PlacesManager = class {
|
||||
|
||||
try {
|
||||
volItem = new PlaceVolumeInfo(kind, volume);
|
||||
} catch(e if e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND)) {
|
||||
return;
|
||||
} catch(e) {
|
||||
if (e.matches(Gio.IOErrorEnum, Gio.IOErrorEnum.NOT_FOUND))
|
||||
return;
|
||||
throw e;
|
||||
}
|
||||
|
||||
this._places[kind].push(volItem);
|
||||
|
||||
@@ -898,17 +898,12 @@ class WindowList {
|
||||
else
|
||||
return;
|
||||
|
||||
let children = this._windowList.get_children().map(a => a._delegate);
|
||||
let active = 0;
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (children[i].active) {
|
||||
active = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
active = Math.max(0, Math.min(active + diff, children.length-1));
|
||||
children[active].activate();
|
||||
let children = this._windowList.get_children()
|
||||
.filter(c => c.visible)
|
||||
.map(a => a._delegate);
|
||||
let active = children.findIndex(c => c.active);
|
||||
let newActive = Math.max(0, Math.min(active + diff, children.length-1));
|
||||
children[newActive].activate();
|
||||
}
|
||||
|
||||
_updatePosition() {
|
||||
@@ -1023,12 +1018,9 @@ class WindowList {
|
||||
|
||||
_removeApp(app) {
|
||||
let children = this._windowList.get_children();
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (children[i]._delegate.app == app) {
|
||||
children[i].destroy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
let child = children.find(c => c._delegate.app == app);
|
||||
if (child)
|
||||
child.destroy();
|
||||
}
|
||||
|
||||
_onWindowAdded(ws, win) {
|
||||
@@ -1042,10 +1034,8 @@ class WindowList {
|
||||
return;
|
||||
|
||||
let children = this._windowList.get_children();
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (children[i]._delegate.metaWindow == win)
|
||||
return;
|
||||
}
|
||||
if (children.find(c => c._delegate.metaWindow == win))
|
||||
return;
|
||||
|
||||
let button = new WindowButton(win, this._perMonitor, this._monitor.index);
|
||||
this._windowList.layout_manager.pack(button.actor,
|
||||
@@ -1065,12 +1055,9 @@ class WindowList {
|
||||
return; // not actually removed, just moved to another workspace
|
||||
|
||||
let children = this._windowList.get_children();
|
||||
for (let i = 0; i < children.length; i++) {
|
||||
if (children[i]._delegate.metaWindow == win) {
|
||||
children[i].destroy();
|
||||
return;
|
||||
}
|
||||
}
|
||||
let child = children.find(c => c._delegate.metaWindow == win);
|
||||
if (child)
|
||||
child.destroy();
|
||||
}
|
||||
|
||||
_onWorkspacesChanged() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
project('gnome-shell-extensions',
|
||||
version: '3.29.90',
|
||||
version: '3.30.1',
|
||||
meson_version: '>= 0.44.0',
|
||||
license: 'GPL2+'
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user