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)

comment:1 by anevilyak, 16 years ago

I've also seen Deskbar occasionally disappear and reappear when switching back and forth between workspaces like this.

in reply to:  1 comment:2 by scottmc, 16 years ago

Replying to anevilyak:

I've also seen Deskbar occasionally disappear and reappear when switching back and forth between workspaces like this.

That seems to be related to #2658

comment:3 by anevilyak, 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.

comment:4 by axeld, 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.

in reply to:  4 comment:5 by anevilyak, 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.

comment:6 by axeld, 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.

in reply to:  6 comment:7 by anevilyak, 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 anevilyak, 16 years ago

Component: Servers/app_serverApplications/Workspaces
Summary: Window relocation has issues with all workspaces windows + multiple workspace resolutionsWorkspace 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:9 by axeld, 16 years ago

I don't know, but if it does, we might also just want to fix it :-)

comment:11 by axeld, 16 years ago

Component: Applications/WorkspacesServers/app_server
Milestone: R1R1/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 :-)

comment:12 by anevilyak, 16 years ago

Understood :) Let me know if I can be of any help :)

comment:13 by axeld, 16 years ago

Resolution: fixed
Status: newclosed

Fixed in hrev28908.

Note: See TracTickets for help on using tickets.