Jasper, Thank you for quick reply.
It seems to work. Though I have no idea what exactly has changed under the hood. I seemed to go through a lot of source code of GS from LookingGlass, PopupMenu and likes down to BoxPointer and stuff and did not notice this subtle difference. So, a more thorough explanation later would be much appreciated. Vadim. On 03/21/2013 12:23 PM, Jasper St. Pierre wrote: > You've discovered the fun of the input shape! The simple answer is to > replace: > > Main.uiGroup.add_actor(box); > > with: > > Main.layoutManager.addChrome(box); > > I'll follow up with a more thorough explanation to the list in a bit. > Hopefully for 3.10 we can fix this better. > > > On Thu, Mar 21, 2013 at 12:50 PM, Vadim <[email protected] > <mailto:[email protected]>> wrote: > > Hi, everyone, > > A list new-comer's question. > > Here's a very simple "extension" to illustrate the problem: > > const Shell = imports.gi.Shell; > const St = imports.gi.St <http://imports.gi.St>; > > const Main = imports.ui.main; > > function init () { > } > > function enable () { > let (box = new St.BoxLayout({ reactive: true, > width: 50, > height: 50, > x: > Main.layoutManager.primaryMonitor.x + 50, > y: > Main.layoutManager.primaryMonitor.y > + > (Main.panel.actor.get_height() >> 1) })) { > global.stage._boxTest = box; > Main.uiGroup.add_actor(box); > box.set_style('background: rgba(0, 0, 0, 0.7)'); > box.show(); > box.raise_top(); // let's try everything > box.connect('enter-event', function () { > global.set_cursor(Shell.Cursor.POINTING_HAND); }); > box.connect('leave-event', function () { > global.unset_cursor(); }); > } // let (box) > } > > function disable() { > if (global.stage._boxTest) { > global.stage._boxTest.destroy(); > global.stage._boxTest = null; > } > } > > What it does is just create a simple fixed sized StBoxLayout and > put it so that it covers half panel vertically. So, the box looks > like this: > > --------------------------------------------------- > > Panel ----------------------- > | Box Area A | > --------------------------------------------------- > | Area B | > ----------------------- > > > Then all I want is to change cursor when the mouse pointer is over > the box. > > What happens: when the pointer moves to Area A, the cursor indeed > changes to "hand". But when it moves to Area B (whether from > outside or from Area A) the cursor changes back to normal as if > Area B was not a part of the box at all. In fact, in Area B the > cursor changes depending on whatever is below the box. In other > words, it "sees through the box" and behaves as if there were no > box at all. > > Somehow, when the box is over the main panel, Clutter delivers the > signal/event to the box, otherwise it does not, and moreover if > the pointer moves from Area A to Area B the box receives the > 'leave-event' signal! > > Also, a note: if I change Main.uiGroup to something else, like its > parent global.stage, it does not change anything. And, of course, > changing the box's opacity to 1.0 does not help either. It is set > to 0.7 just to see what is below it. Another observation is that > if I open, for example, LookingGlass, then the whole box works as > expected. > > It seems to me that I am missing just a little detail to make it > work. So, my question is simple enough: what is missing in the > code above. > > Thanks in advance for your help, > Vadim. > > > _______________________________________________ > gnome-shell-list mailing list > [email protected] <mailto:[email protected]> > https://mail.gnome.org/mailman/listinfo/gnome-shell-list > > > > > -- > Jasper
_______________________________________________ gnome-shell-list mailing list [email protected] https://mail.gnome.org/mailman/listinfo/gnome-shell-list
