Opened 16 years ago
Closed 16 years ago
#3213 closed bug (fixed)
Workspace preflet code incorrectly handles restoring window position on workspace switches when workspaces differ in resolution
Reported by: | anevilyak | Owned by: | axeld |
---|---|---|---|
Priority: | normal | Milestone: | R1/alpha1 |
Component: | Servers/app_server | Version: | R1/pre-alpha1 |
Keywords: | Cc: | ||
Blocked By: | Blocking: | ||
Platform: | All |
Description
Steps to reproduce:
1) open workspaces applet.
2) Set up two workspaces of differing resolutions, i.e. workspace 1 @ 1280x1024 and workspace 2 @ 800x600.
3) Move window to top left corner in workspace 1.
4) Switch to workspace 2.
5) Move window down a few hundred px
6) Switch back to workspace 1 - the window will have moved far more than you moved it in workspace 2.
Continuing to switch back and forth sometimes provokes other random window movements. Note that this seems to work fine when the workspace resolutions are the same, and I've been unable to find out the reason why the resolution switch makes a difference.
Change History (13)
follow-up: 2 comment:1 by , 16 years ago
comment:2 by , 16 years ago
comment:3 by , 16 years ago
That's possible, though at the moment I suspect it might be related to the problem reported above, since I was sometimes seeing the workspace window disappearing entirely as well.
follow-up: 5 comment:4 by , 16 years ago
The window you move around is the Workspaces window, right? Because that one contains code to relocate itself correctly on a mode switch. Maybe that one is triggered on a workspace switch in Haiku? I'm not sure if it really shouldn't do that, though.
Normally, I would think the window should be notified indeed, if the mode is different. So it's probably just a problem in Workspaces itself.
comment:5 by , 16 years ago
Replying to axeld:
The window you move around is the Workspaces window, right? Because that one contains
Workspaces is the only one I've noticed it with, yes, though I don't actually have that many apps which use a window with more than one workspace in its mask, will see if I can produce a testcase outside of Workspaces to be sure.
follow-up: 7 comment:6 by , 16 years ago
To be sure you should just disable the relocation code in Workspaces to see if it's still reproducible. Other multi-workspace windows often have similar code as well :-)
You could also use "hey" to set a standard window to be visible everywhere, though.
comment:7 by , 16 years ago
Replying to axeld:
To be sure you should just disable the relocation code in Workspaces to see if it's still reproducible. Other multi-workspace windows often have similar code as well :-)
You could also use "hey" to set a standard window to be visible everywhere, though.
True enough, will give that a try after work and report back :)
comment:8 by , 16 years ago
Component: | Servers/app_server → Applications/Workspaces |
---|---|
Summary: | Window relocation has issues with all workspaces windows + multiple workspace resolutions → Workspace preflet code incorrectly handles restoring window position on workspace switches when workspaces differ in resolution |
You're correct, it does indeed appear to be the code in Workspaces that's the problem. Does the BeOS bug that it claims to be working around with that code exist in Haiku?
comment:10 by , 16 years ago
http://dev.haiku-os.org/browser/haiku/trunk/src/apps/workspaces/Workspaces.cpp#L498 if you're interested in trying :)
comment:11 by , 16 years ago
Component: | Applications/Workspaces → Servers/app_server |
---|---|
Milestone: | R1 → R1/alpha1 |
I looked into it, and it's a bit more involved with when the app_server should send what message, ie. workspace activated vs. screen changed vs. frame moved. I guess I have to meditate about it a bit :-)
I've also seen Deskbar occasionally disappear and reappear when switching back and forth between workspaces like this.