Bug 32 - Break windows don't move
Status:
VERIFIED FIXED
Component:
GUI :: gtkmm
Version:
unspecified
Hardware:
PC Windows NT
Importance:
P3 minor
Target Milestone:
---
Assignee:
Raymond Penners
URL:
Depends on:
Blocks:
Reported:
Sep 4 2002 20:49:06 UTC
by:
Kees-Jan Dijkzeul
Modified:
Oct 22 2002 01:54:46 UTC
WhoWhenWhatRemovedAdded
Kees-Jan DijkzeulSep 9 2002 21:46:07 UTCblocks52
Raymond PennersSep 14 2002 23:10:33 UTCassigned_toRob CaelersRaymond Penners
Raymond PennersSep 14 2002 23:17:16 UTCstatusNEWRESOLVED
resolutionFIXED
Rob CaelersSep 14 2002 23:51:46 UTCstatusRESOLVEDREOPENED
resolutionFIXED
Raymond PennersSep 15 2002 20:28:42 UTCstatusREOPENEDRESOLVED
resolutionFIXED
Kees-Jan DijkzeulSep 23 2002 01:50:39 UTCstatusRESOLVEDREOPENED
resolutionFIXED
Raymond PennersSep 24 2002 13:06:30 UTCstatusREOPENEDASSIGNED
Raymond PennersSep 25 2002 10:42:40 UTCseveritymajorminor
statusASSIGNEDRESOLVED
resolutionFIXED
Kees-Jan DijkzeulSep 26 2002 23:30:06 UTCstatusRESOLVEDREOPENED
resolutionFIXED
Raymond PennersSep 27 2002 00:53:06 UTCstatusREOPENEDASSIGNED
Raymond PennersSep 28 2002 06:11:24 UTCstatusASSIGNEDRESOLVED
resolutionFIXED
Kees-Jan DijkzeulOct 1 2002 01:19:04 UTCstatusRESOLVEDREOPENED
resolutionFIXED
Raymond PennersOct 1 2002 01:58:37 UTCstatusREOPENEDASSIGNED
Raymond PennersOct 1 2002 11:23:23 UTCstatusASSIGNEDRESOLVED
resolutionFIXED
Kees-Jan DijkzeulOct 2 2002 06:20:31 UTCstatusRESOLVEDVERIFIED
Description
Kees-Jan Dijkzeul  Sep 4 2002 20:49:06 UTC
When I move the mouse over a break window, it does not move away

once I got it to move away by clicking on it, but I could not reproduce that 
behaviour (It jumped to the upper left corner. being used to wp, I didn't 
expect it to go there, but I guess it's acceptable :-) )
Comment 1
Rob Caelers  Sep 5 2002 18:05:57 UTC
Works fine under Linux. This is probably a bug in GDK/GTK+ on win32.
enter_notify events don't work under win32...
Comment 2
Raymond Penners  Sep 14 2002 23:17:16 UTC
Fixed. 
I must admit, it jumps around not exactly the way I programmed it to do. :)

Comment 3
Rob Caelers  Sep 14 2002 23:51:46 UTC
In the linux version, now ALL windows move. This includes the MP/RB windows with
insist and buttons. The buttons are very hard to use this way....

I tried adding "set_avoid_pointer(false);" to RestBreakWindow::start(). It
didn't help...
Comment 4
Kees-Jan Dijkzeul  Sep 23 2002 01:50:39 UTC
It still is possible to enter the prelude window, without it jumping away. 
Admittedly, it's much more difficult than before.

One other problem: The text cursor is ignored. The prelude window just sits 
there in the middle being very annoying.

wp solves this by jumping away after a few seconds, regardless of mouse 
actions. When the prelude window is near the border of the screen, it is far 
less annoying :-)
Comment 5
Raymond Penners  Sep 24 2002 13:06:30 UTC
The prelude window does jump away automatically, did so since the beginning.
Reporter, please confirm this.

I can confirm that there is one way to enter the prelude window:
- x=middle, y=bottom => you can enter from the left.
Comment 6
Kees-Jan Dijkzeul  Sep 24 2002 23:14:21 UTC
Technically, you are correct. The window does jump away. However, it takes much 
longer to do so than with wp. I propose to make it jump away sooner.

As for the x=middle, y=bottom stuf: It doesn't always work, and I don't think 
it's the only way, either.

Is it at all relevant from which side you enter?
Comment 7
Raymond Penners  Sep 25 2002 10:42:40 UTC
gdk_window_get_pointer was unreliable, now using native W32 call.
Comment 8
Kees-Jan Dijkzeul  Sep 26 2002 23:30:06 UTC
Now, it is indeed impossible to move the mouse over a prelude window. 
Nevertheless, I'm still not entirely happy.

First of all, the prelude window stays too long in the middle of the screen 
before automatically jumping away. I think it should jump after one, maybe two 
seconds, but not much more.

When attempting to move the mouse over the prelude window, It jumps to a lot of 
places, all on the right hand side of the screen, following some kind of zig-
zag pattern. Two things can be said about that:
- there are a lot of places where the window is possibly displayed. 
- most of them are not at places where a user would see them (the border of the 
screen outside the area I'm usually paying attention to).

I guess, what I'm trying to say is, that if the prelude is near the border of 
the screen, I have to go look for it, because it is not "in view". With the 
current algorithm there are a lot of places I need to look.

I guess I'm going to advocate (once again :-) wp behaviour, where the prelude 
is either in the middle of the screen, or at the top of the screen. This way, 
the amount of searching on my part is minimized.
Comment 9
Raymond Penners  Sep 27 2002 00:53:06 UTC
Ok, I forgot to have the prelude window moved automatically. Will be fixed.
Also, I will check why it is zig-zagging, as it shouldn't.  You should be able
to "push/shove" the prelude whereever you want.

> most of them are not at places where a user would see them (the border of the 
screen outside the area I'm usually paying attention to).
> I'm going to advocate (once again :-) wp behaviour, where the prelude 
is either in the middle of the screen, or at the top of the screen. 

The current behaviour is desirable, it is actually a feature. It doesn't really
show because of the zig-zagging, though, but that will be adressed. 

You don't always want to be disturbed by the prelude. So, you want to be able
shove it whereever it doesn't bother you. The top and center are not desirable
places. For example, when browsing the net, the top is your address bar, and the
center is the page itself.

Shoving is the way to go. I think it is wwwaaaay overkill to make this
configurable. What will become configurable is the _initial_ location of the
break windows (micro-pause, rest break and prelude).






Comment 10
Kees-Jan Dijkzeul  Oct 1 2002 01:19:04 UTC
The prelude jumps aways sooner now. This is a great improvement. However, 
I'm still not entirely happy. (You didn't expect me to, did you?)

When I first evaluated the new behaviour, it felt like it was still zig-
zagging, only this time the entire screen was used, instead of just the right 
half. Then, I asked Raymond the algorithm behind it:

> mouse coors = x,y
> prelude window center = cx,cy.
> je duwt het p-window langs de lijn (x,y),(cx,cy)
> als p-window tegen border aanloopt.. flipt ie naar andere kant.

This behaviour is recognisable :-). However, whenever you push the window, it 
jumps away way too far. This way, it is very hard to put the window precisely 
where you want it.

There also are some more minor remarks:

1. I don't think pushing along the line (x,y),(cx,cy) is a good idea. For 
example, if I'm moving my mouse on an exact horizontal line, but I'm not 
hitting the prelude box precisely in the middle, then the prelude box will also 
have some vertical movement, with the ultimate result of "falling of my mouse 
pointer". I think it would be better to move the window in the same direction 
and the same amount the mouse pointer is moving.

2. When moving fast enough, it is possible to move over the prelude window 
without it moving. This is somewhat annoying, because this is the way I 
currently work. When a prelude appears, I wave at it with the mouse, and then 
it should jump to the correct location. wr either doesn't move at all, or in 
some random direction, because of the uncoordinated wave and the pushing 
algorithm.

3. I'm not sure flipping to the other side is a good idea. Especially with the 
current large jumps, this gives a behaviour that appears random. Reducing the 
jumps should help. Placing the window partially off-screen might also help. 
Clipping to the screen (no flipping at all) might also be an acceptable 
solution.
Comment 11
Raymond Penners  Oct 1 2002 01:58:37 UTC
I agree, I also didn't really like the new solution. In my 639th try to address
this bug, I'll do the following:

There will be nine places ("O") where the prelude can be positioned:
O-O-O
|X|X|
O-O-O
|X|X|
O-O-O
You can push the prelude from one O to the other O. The algorith is to determine
where to jump to will be the same as currently present.

So, in practice, this boils down to the current solution, but with the positions
restricted to a 3x3 grid.

Btw, you are talking about large jumps. IMHO, they should be large. If the mouse
pointer is there, that means that you are trying to work in that area. The
prelude should _not_ interfere, and move the h*ll out...



Comment 12
Kees-Jan Dijkzeul  Oct 1 2002 02:06:44 UTC
You're mixing two different concepts.

1. "I'll go wherever you push me" -- In this concept, the user has to have fine-
grained control over the pushing, otherwise you get apparent random behaviour.

2. "I'll get out of the way" -- In this concept, the window jumps to the "right 
place". The user cannot be expected to indicate which place is the right one. 
Large jumps are allowed, if they lead to "the right place".

The most obvious "out of the way" location is an invisible prelude. If you want 
to go this way, I propose to make the prelude invisible if it has to jump away 
more than two times. If you like, you can turn the sheep in the system tray red 
to indicate that there is an invisible prelude. This approach is especially 
desirable if the prelude is going to disappear anyway. If a break is going to 
be forced, you probably don't want this.
Comment 13
Raymond Penners  Oct 1 2002 04:18:17 UTC
The "I'll go wherever you push me" is pointless if you have a good
implementation of "I'll get out of the way". Why? Because you'll only want to
place it on a specific place if the current place interferes with your working
activities. 

> The most obvious "out of the way" location is an invisible prelude.

I don't agree, the prelude should somehow be irritating enough not to be
ignored, but it should be not irritating enough to obstruct your working activities.

IMHO, my proposed grid approach does just that.
Comment 14
Raymond Penners  Oct 1 2002 11:23:23 UTC
Kees-Jan, you were right all along, almost:

> I guess I'm going to advocate (once again :-) wp behaviour, where the prelude 
> is either in the middle of the screen, or at the top of the screen. This way, 
> the amount of searching on my part is minimized.

There are now only three places where the window can be:
- Initially it appears in the middle.
- If  you continue working, it auto-jumps to the top of your screen. 
- If your pointer enters the window, it jumps to either the bottom/top.

That's it.. no grid, no more sin()/cos() to determine how to push the window in
a direction.


Comment 15
Kees-Jan Dijkzeul  Oct 2 2002 06:20:31 UTC
Finally!