windowManager: Implement the resize popup here

mutter recently removed its implementation, so add a simple one here.
This commit is contained in:
Jasper St. Pierre 2014-12-29 17:30:38 -08:00
parent 01c6392c13
commit 3291281957
2 changed files with 52 additions and 0 deletions

View File

@ -2107,6 +2107,15 @@ StScrollBar StButton#vhandle:active {
font-size: 14pt; font-size: 14pt;
} }
/* Resize popup */
.resize-popup {
border-radius: 10px;
background-color: rgba(0.0, 0.0, 0.0, 0.9);
border: 2px solid #868686;
padding: 16px;
font-size: 14pt;
}
/* ShellMountOperation Dialogs */ /* ShellMountOperation Dialogs */
.shell-mount-operation-icon { .shell-mount-operation-icon {
icon-size: 48px; icon-size: 48px;

View File

@ -580,6 +580,35 @@ const AppSwitchAction = new Lang.Class({
}); });
Signals.addSignalMethods(AppSwitchAction.prototype); Signals.addSignalMethods(AppSwitchAction.prototype);
const ResizePopup = new Lang.Class({
Name: 'ResizePopup',
_init: function() {
this._widget = new St.Widget({ layout_manager: new Clutter.BinLayout() });
this._label = new St.Label({ style_class: 'resize-popup',
x_align: Clutter.ActorAlign.CENTER,
y_align: Clutter.ActorAlign.CENTER,
x_expand: true, y_expand: true });
this._widget.add_child(this._label);
Main.uiGroup.add_actor(this._widget);
},
set: function(rect, displayW, displayH) {
/* Translators: This represents the size of a window. The first number is
* the width of the window and the second is the height. */
let text = _("%d x %d").format(displayW, displayH);
this._label.set_text(text);
this._widget.set_position(rect.x, rect.y);
this._widget.set_size(rect.width, rect.height);
},
destroy: function() {
this._widget.destroy();
this._widget = null;
},
});
const WindowManager = new Lang.Class({ const WindowManager = new Lang.Class({
Name: 'WindowManager', Name: 'WindowManager',
@ -792,6 +821,8 @@ const WindowManager = new Lang.Class({
Shell.ActionMode.TOPBAR_POPUP, Shell.ActionMode.TOPBAR_POPUP,
Lang.bind(this, this._toggleAppMenu)); Lang.bind(this, this._toggleAppMenu));
global.display.connect('show-resize-popup', Lang.bind(this, this._showResizePopup));
Main.overview.connect('showing', Lang.bind(this, function() { Main.overview.connect('showing', Lang.bind(this, function() {
for (let i = 0; i < this._dimmedWindows.length; i++) for (let i = 0; i < this._dimmedWindows.length; i++)
this._undimWindow(this._dimmedWindows[i]); this._undimWindow(this._dimmedWindows[i]);
@ -1522,4 +1553,16 @@ const WindowManager = new Lang.Class({
let dialog = new DisplayChangeDialog(this._shellwm); let dialog = new DisplayChangeDialog(this._shellwm);
dialog.open(); dialog.open();
}, },
_showResizePopup: function(display, show, rect, displayW, displayH) {
if (show) {
if (!this._resizePopup)
this._resizePopup = new ResizePopup();
this._resizePopup.set(rect, displayW, displayH);
} else {
if (this._resizePopup)
this._resizePopup.destroy();
}
},
}); });