From: Carsten H. (T. R. <ra...@ra...> - 2009-09-03 12:39:15
|
On Sat, 29 Aug 2009 18:56:22 -0500 Nick Hughart <me...@me...> said: edge bindings have fundamental design flaws - as you picked up. 1. original invisible input-only windows were fine as they were only ever thereon a border you can flip over. on the ones you can't - they never were there. as a flip timeout is short (like < 0.5 sec normally) that is the period of time u might want to use that edge (click a window title to move it, press a button in an apps window), before it will flip. this makes it practically "never" that this is the case. as of edge bindings this window is ALWAS there stealing input. i have noticed this already - trying to hit a window titlebar to drag it when my mouse is at the top of the screen. the edge binding traps it. this in general is bad. imho edge bindings - while cool, suffer from an x limitiation. we cannot just snoop all events without interfering with them in some way (ie trapping them and not passing them on etc.). the only way this is possible is xevie at the moment. imho - until xevie is being used, i dont think having bindings for regions of the screen is a good idea. we need to handle these on a special case basis - as the old edge flip code did for edge flipping. the problem is the shelf autohide. to be honest - i don't think it's possible to do. you will ALAYS steal the whole bottom edge of the screen for it (or whatever edge the shelf is along). lets say its the top edge. this means if i have a titlebar there, i can't just woosh my mouse to the top of the sceen, click and drag as the edge binding steals it (for shwoing the shelf). my opinion is this. 1. remove edge event and bindings. wait for xevie to be used - then we see ALL mouse events and can make any region of the screen passively listen to events and do anything we like. 2. bring back the old edge flip code 3. disable shelf autoshow/hide (sorry just not going to work given current infrastructure). to do this right we need to 1. use xevie and become an event translator and "manager" (xevie is for events what window management is for window positions/sizes etc, or a composite manager is for pixels. it gets every vent and you have a chance to modify it or just pass it back as-is, but a bi-product is actually seeing all thew mouse events no matter where). 2. move from edge bindings to "screen region bindings" (not just edges just any area). > So the edge bindings have once again ticked me off. So much so that > I've made the attached patch to correct it's flaws. I tried to keep > as much of the mechanisms the same even though I don't exactly like how > it's done right now. > > Anyway, the patch fixes a couple of things. > > First it will hide any of the edge windows if that edge is not being > used. It is pointless to have the entire 1px border of the screen > unusable when I have no edge bindings. > > Second it fixes the behavior of the fullscreen option. Previously the > edges were set above all windows, even fullscreen. The only difference > with the option set was that events would be ignored, but the edge > window was still in the way stealing events. It is much better to > actually layer things properly so that when a fullscreen app is active, > the edge windows are layered below it and thus do not get in the way at > all and don't even have to ignore the events because they never happen. > > Patch attached. I would just commit it, but I know I was met with > resistance for some reason the last time I brought these issues up. > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ra...@ra... |