Comments
-
Greg Hurrell
I can't reproduce this bug.
The Floater respects the position of the Dock (ie. when it calculates the "visible screen area" it excludes the Dock). If you move the Dock, the visible screen area changes, and the Floater position changes. If you move it back, the area changes back and the Floater moves back. At no point does the Floater move of screen.
On which edge of the screen is your Dock? Mine is on the bottom and no amount of hiding or unhiding the Dock can make the Floater move off screen.
-
William Hall
It's definitely reproducible on my machine. If you can suggest a software-based way to record a movie of the display, I'll do so. For now I've tried ordered screenshots.
My dock is bottom-oriented on the left-hand of two displays. The floater is bottom-right of the left- hand display. I took screenshots with and without dock hiding. Page 1 of each is the left-hand display, and page 2 is the right-hand display. They'll also give you an idea of the size of my dock.
Without hiding: http://analogkid.net/Picture1.pdf
And the only change to the next picture is to toggle dock-hiding via right-click interface on the dock, then re-display the floater: http://analogkid.net/Picture2.pdf
I think the problem stems from my setting the floater position with dock-hiding off such that the bottom of the floater is below the top edge of the dock. Starting from scratch, here is me setting the floater position with dock hiding off. The floater is completely on-screen. http://analogkid.net/Picture3.pdf
I then display the floater, and it's still fully on-screen. http://analogkid.net/Picture4.pdf
But if I turn on dock hiding and show the floater again it is off-screen. http://analogkid.net/Picture5.pdf
None of this is inconsistent with these statements of yours - this all matches the behavior that I see:
The Floater respects the position of the Dock (ie. when it calculates the "visible screen area" it excludes the Dock). If you move the Dock, the visible screen area changes, and the Floater position changes. If you move it back, the area changes back and the Floater moves back.
Except this one of course, which is contrary to the description of the bug.
At no point does the Floater move off screen.
Can you reproduce by setting the floater with dock-hiding on as I have in screenshot #3?
I should expect that in addition to moving along with the dock as it grows/shrinks in size or moves up/ down due to hiding, that the floater would never move such that it's bottom edge was off-screen.
-
William Hall
This happens on my powerbook at home, single-display, same sort of position for the floater (lower edge below the top of Dock, bottom right anchored, Dock on bottom). That rules out dual-display at least.
-
Greg Hurrell
Ok, thanks for posting the screenshots. Now I know what's happening.
This is consistent with what I described above. As I said, when it calculates the "visible screen area" it excludes the Dock. To be more precise, it uses the visibleFrame method in Cocoa's NSScreen class. According to this method, the place where you have the Floater is actually outside of the visible screen area (because the bottom of the floater is below the top edge of the Dock, which is what defines the border of the visible screen area for Cocoa; the "visible screen area" is a rectangle, and the blank spaces on either side of the Dock are not part of it). So when you later hide the dock, the visibleFrame changes (gets a bit bigger) and the Floater moves to maintain its old position, which is several pixels below the visible screen area.
There is no way to fix this "bug" and have Synergy continue to respect the position of the Dock. There are no methods in Cocoa for determining how tall the Dock is or how wide (nor in Carbon or any other API as far as I know). Basically the APIs assume that if you ask for the visible frame rectangle then you will not put things in the space on either size of the Dock. It's a "no go" zone.
The only way to resolve the issue would be to ignore the Dock entirely when calculating the screen size (using the frame method instead of the visibleFrame method). This is a shame because many people position the Floater above the Dock and if I make the change then they will consider the new behaviour to be a bug (people will see this who have a Dock that occupies the entire width of their screen; as they add and remove items it will grow and shrink, and the Synergy Floater should adjust itself along the way).
So I am going to leave this bug report open for a while and will wait for comments before making a decision about how to handle it.
-
Greg Hurrell
See this forum posting:
https://wincent.dev/a/support/forums/showflat.php?Number=806
Another user would like Dock-independent positioning of the Floater. Sounds like there is enough interest in implementing this to make it worthwhile (ie. as an option, not as a default behaviour).
-
Greg Hurrell
Changing the summary and flagging this as an enhancement request.
-
Greg Hurrell
Changing assignment to reflect my new email address.
https://wincent.dev/a/news/archives/2006/05/change_of_email.php
Add a comment
Comments are now closed for this issue.