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:
parent
68b2d5fcf0
commit
e2ccbe5528
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}));
|
}));
|
||||||
|
@ -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:
|
||||||
|
Loading…
Reference in New Issue
Block a user