[AppMonitor] Handle window title changes causing mapping changes
For Firefox/OpenOffice, right now we have a workaround in the code where we look at their "title" property. However, we weren't monitoring that property for changes, and I'm fairly certain Firefox at least was mapping a window and then very quickly changing its title after. So we need to handle dynamic changes. Split out the wm_class mapping from the title hack. It was messy and weird to have the two mixed because they're not at all related, and we're not trying to handle WM_CLASS changes right now. Explicitly connect to notify::title in the case where we had a title fallback. When a title changes, just treat it as an add+remove. In the Application Menu area in the panel, hook up to app-added and app-removed so we get notification of the active app changing.
This commit is contained in:
@ -98,12 +98,17 @@ AppPanelMenu.prototype = {
|
||||
this.actor.opacity = 192;
|
||||
}));
|
||||
|
||||
this._metaDisplay.connect('notify::focus-window', Lang.bind(this, function () {
|
||||
this._sync();
|
||||
}));
|
||||
Shell.AppMonitor.get_default().connect('startup-sequence-changed', Lang.bind(this, function() {
|
||||
this._sync();
|
||||
}));
|
||||
this._metaDisplay.connect('notify::focus-window', Lang.bind(this, this._sync));
|
||||
|
||||
let appMonitor = Shell.AppMonitor.get_default();
|
||||
appMonitor.connect('startup-sequence-changed', Lang.bind(this, this._sync));
|
||||
// For now just resync on application add/remove; this is mainly to handle
|
||||
// cases where the focused window's application changes without the focus
|
||||
// changing. An example case is how we map Firefox based on the window
|
||||
// title which is a dynamic property.
|
||||
appMonitor.connect('app-added', Lang.bind(this, this._sync));
|
||||
appMonitor.connect('app-removed', Lang.bind(this, this._sync));
|
||||
|
||||
this._sync();
|
||||
},
|
||||
|
||||
|
Reference in New Issue
Block a user