layout: Change setDummyCursorPosition to also set the size

If we are being used to follow a text entry cursor we also need to set
the size so that the popup menu avoids covering it.

https://bugzilla.gnome.org/show_bug.cgi?id=727579
This commit is contained in:
Rui Matos 2014-04-11 16:12:52 +02:00
parent 68b2d5fcf0
commit e2ccbe5528
3 changed files with 7 additions and 6 deletions

View File

@ -35,7 +35,7 @@ function addBackgroundMenu(actor, layoutManager) {
function openMenu() { function openMenu() {
let [x, y] = global.get_pointer(); let [x, y] = global.get_pointer();
Main.layoutManager.setDummyCursorPosition(x, y); Main.layoutManager.setDummyCursorGeometry(x, y, 0, 0);
actor._backgroundMenu.open(BoxPointer.PopupAnimation.NONE); actor._backgroundMenu.open(BoxPointer.PopupAnimation.NONE);
} }

View File

@ -155,7 +155,7 @@ const CandidatePopup = new Lang.Class({
panelService.connect('set-cursor-location', panelService.connect('set-cursor-location',
Lang.bind(this, function(ps, x, y, w, h) { Lang.bind(this, function(ps, x, y, w, h) {
Main.layoutManager.setDummyCursorPosition(x, y); Main.layoutManager.setDummyCursorGeometry(x, y, w, h);
if (this._boxPointer.actor.visible) if (this._boxPointer.actor.visible)
this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0); this._boxPointer.setPosition(Main.layoutManager.dummyCursor, 0);
})); }));

View File

@ -223,7 +223,7 @@ const LayoutManager = new Lang.Class({
this._keyboardHeightNotifyId = 0; this._keyboardHeightNotifyId = 0;
// A dummy actor that tracks the mouse or text cursor, based on the // A dummy actor that tracks the mouse or text cursor, based on the
// position set in setDummyCursorPosition. // position and size set in setDummyCursorGeometry.
this.dummyCursor = new St.Widget({ width: 0, height: 0 }); this.dummyCursor = new St.Widget({ width: 0, height: 0 });
this.uiGroup.add_actor(this.dummyCursor); this.uiGroup.add_actor(this.dummyCursor);
@ -729,7 +729,7 @@ const LayoutManager = new Lang.Class({
this._updateRegions(); this._updateRegions();
}, },
// setDummyCursorPosition: // setDummyCursorGeometry:
// //
// The cursor dummy is a standard widget commonly used for popup // The cursor dummy is a standard widget commonly used for popup
// menus and box pointers to track, as the box pointer API only // menus and box pointers to track, as the box pointer API only
@ -738,9 +738,10 @@ const LayoutManager = new Lang.Class({
// is what you should use. Given that the menu should not track // is what you should use. Given that the menu should not track
// the actual mouse pointer as it moves, you need to call this // the actual mouse pointer as it moves, you need to call this
// function before you show the menu to ensure it is at the right // function before you show the menu to ensure it is at the right
// position. // position and has the right size.
setDummyCursorPosition: function(x, y) { setDummyCursorGeometry: function(x, y, w, h) {
this.dummyCursor.set_position(Math.round(x), Math.round(y)); this.dummyCursor.set_position(Math.round(x), Math.round(y));
this.dummyCursor.set_size(Math.round(w), Math.round(h));
}, },
// addChrome: // addChrome: