Closed Bug 127575 Opened 23 years ago Closed 21 years ago

enable full screen mode to function on secondary display of multi-monitor systems

Categories

(Core :: XUL, enhancement)

x86
Windows 98
enhancement
Not set
normal

Tracking

()

RESOLVED FIXED
Future

People

(Reporter: ruediger, Assigned: deanis74)

References

()

Details

Attachments

(1 file, 2 obsolete files)

When using Mozilla on a Windows-XP system with more than one monitor attached
(multi-monitor) and you put a window into full screen mode that is on the
secondary display, the window is always shown on the primary display. However,
the full screen window has the dimensions of the secondary display (can be seen
only when using displays with different resolutions).
Full screen mode for windows on the primary display works fine.

Reproducible: Always
Steps to Reproduce:
1. Start mozilla on a multi-monitor system (Windows XP)
2. Move window to secondary display
3. Switch to full screen mode (F11)
To hewitt
Assignee: asa → hewitt
same with windows 2000
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Target Milestone: --- → Future
Same problem on build 2002031104 XP and 2000, I didn't see this bug originally
and filed a dup.  Could we add the word 'multiple' instead of or in addition to
the word 'multi-' to the summary?
*** Bug 133848 has been marked as a duplicate of this bug. ***
Problem persists in RC1.  Also, it looks like Mozilla is hiding the taskbar on
full-screen.  How about the other always on top application bars when it is on
another monitor?  From the current behaviour, it looks like those bars will
cover up the mozilla full screen window.
*** Bug 146243 has been marked as a duplicate of this bug. ***
this looks like a duplicate of bug 71201
I am not sure it is the same problem since the window state can be 'tricked'
into remember being in the other monitor through a series of open and closes,
but I haven't gotten that to work for full screen mode.
*** Bug 150999 has been marked as a duplicate of this bug. ***
*** Bug 139370 has been marked as a duplicate of this bug. ***
URL: http:/
Severity: normal → enhancement
Component: Browser-General → XP Toolkit/Widgets
Keywords: helpwanted
Summary: On multi-monitor systems, switching to full screen mode moves window to primary display. → enable full screen mode to function on secondary display of multi-monitor systems
*** Bug 155464 has been marked as a duplicate of this bug. ***
*** Bug 151704 has been marked as a duplicate of this bug. ***
*** Bug 153697 has been marked as a duplicate of this bug. ***
per a posting in de.comm.software.mozilla, this happens on linux too. os->all
(message-id <3D621C37.FD6B0302@imr.uni-hannover.de>, in german)
OS: Windows XP → All
err, no idea why I thought that was on linux; it was windows (but windows 98,
therefore setting os to win98)
OS: All → Windows 98
*** Bug 164859 has been marked as a duplicate of this bug. ***
*** Bug 164926 has been marked as a duplicate of this bug. ***
This is also a bug in Linux. Please read my comments in this bug, as it provides
more details about this in versions of mozilla for XFree:

http://bugzilla.mozilla.org/show_bug.cgi?id=164926

Thanks
*** Bug 165159 has been marked as a duplicate of this bug. ***
A few thoughts about this bug:

Note that in windows machines using the nvidia driver, there's this feature
called nview, which is a "window manager" level feature that does not allow a
program to become full screen across multiple monitors. AFAIK, no other driver
does this.

This feature doesn't exist in Linux, presumably since there can be many window
managers, and the task of maximizing is usually a job that is left up to the
window manager. The only sollution for Linux would be to detect the presence of
Xinerama XFree extensions and use the information supplied by the Xinerama API
to maximize the window into the monitor it's currently occupying.

Examples of programs that do this are mplayer, xine, and xawtv.

I hope this information is helpful. Otherwise, nevermind. :)
This bug happens because of this code in GlobalWindowImpl::SetFullScreen():

http://lxr.mozilla.org/mozilla/source/dom/src/base/nsGlobalWindow.cpp#1950

It gets the size of the current screen, but then moves to 0,0.  We should move
to the top-left of the current screen.  We should use, I think, availTop and
availLeft instead.

- MoveTo(0, 0);
+ PRInt32 screenLeft;
+ PRInt32 screenTop;
+ screen->GetAvailLeft(&screenLeft);
+ screen->GetAvailTop(&screenTop);
+ MoveTo(screenLeft, screenTop);

Can someone with multiple monitors try this?
*** Bug 164198 has been marked as a duplicate of this bug. ***
*** Bug 168329 has been marked as a duplicate of this bug. ***
*** Bug 169463 has been marked as a duplicate of this bug. ***
*** Bug 182025 has been marked as a duplicate of this bug. ***
Has anyone tried my suggestion in comment 21?
*** Bug 182024 has been marked as a duplicate of this bug. ***
*** Bug 182889 has been marked as a duplicate of this bug. ***
*** Bug 173839 has been marked as a duplicate of this bug. ***
*** Bug 185577 has been marked as a duplicate of this bug. ***
*** Bug 184205 has been marked as a duplicate of this bug. ***
Please everyone,

if you'd like this bug fixed, vote for it.  It doesn't seem to be going anywhere. =)

I am crossing my fingers that this will help it get fixed soon.
Mike: I suggested a fix in comment 21.  I need someone with a second monitor to
test it.
Updating URL.  The code I'm thinking about looks to now be in
nsBaseWidget::MakeFullScreen().
Attached patch patch take 1 (obsolete) — Splinter Review
This doesn't break anything in my single-monitor setup.  Kerz, can you try it
on your multi setup?
Comment on attachment 109508 [details] [diff] [review]
patch take 1

>     // Hide all of the OS chrome
>     if (fullScreen)
>       fullScreen->HideAllOSChrome();
>-  } else if (mOriginalBounds) {
>-    Resize(mOriginalBounds->x, mOriginalBounds->y, mOriginalBounds->width,
>-           mOriginalBounds->height, PR_TRUE);
>+    } else if (mOriginalBounds) {
>+      Resize(mOriginalBounds->x, mOriginalBounds->y, mOriginalBounds->width,
>+             mOriginalBounds->height, PR_TRUE);


Ignore this whitespace change.	I totally misread that part of the code.
I just tested the patch on my multi-monitor Windows 2000 system.
I'm seeing two problems.

1.  It always hides the taskbar, regardless of whether Mozilla is going
fullscreen on the same screen as the taskbar.

2.  When it is going fullscreen on the same screen as the taskbar, it hides the
taskbar but does not take up the space the taskbar was occupying, leaving the
desktop visible there.
Did you exclude the part of the patch in comment 36?  I'm not sure if that's 
related or not, but it's a good place to start.  If you did, I can look at 
this when I get back from holidays.
After having an e-mail discussion with Dean Tessman, he told me to report my
findings here.

It looks like Mozilla's method of going fullscreen is flawed.  It hides the
taskbar in a bad way, and the OS isn't aware of what's going on.  If Mozilla
crashes or hangs, the taskbar remains hidden, but it's still there reserving its
space.  You can see this by maximizing another window.  It will leave that space
empty.

With Dean's patch, the available area on the current monitor is used, which of
course doesn't include the reserved taskbar space.  Then there's still the
problem of the taskbar being hidden even if the Mozilla window is on another
monitor.

IE doesn't hide the taskbar at all.  It sets itself as always on top and takes
the full screen dimensions instead of the available space.  When it loses focus,
it turns "always on top" back off, much like Mozilla currently unhides the
taskbar when it loses focus.

Mozilla should probably go about doing this the same way IE currently does.  Not
only does it resolve the issue of the taskbar hiding when it shouldn't, it also
deals with any unknown windows docked to the side of the screen, like the
taskbar does, from third-party applications like ICQ.
Let us not forget that this is a Linux issue too.
This bug has Windows marked as the OS.  If the current patch does not already
fix the issue in Linux, we probably need a seperate bug, as someone on Linux
will have to take a look at it.  If the current patch works perfectly on Linux,
then the only work left for the next version of the patch is Windows-specific,
so just sit tight.
I can only hope that any patch that fixes this issue in windows will also it for
Linux too. But I have my doubts...

I'm following this bug because my original bug, which was described as a bug in
mozilla for Linux, was flagged as a duplicate of this one.

Perhaps it would be a good idea to create a separate bug for this issue under Linux.
burpmaster: thinking about your investigations in comment 39 a little more, I
think you should file a separate bug on changing how we do full-screen on Windows.

I'm going to do up a new patch here in the next day or so that should hopefully
address the multi-monitor problem on all platforms.  burpmaster will (if the
offer's still good) test it for me on Windows before I post it here.
Attached patch patch v2 (obsolete) — Splinter Review
Burpmaster says this works on his multi-monitor Win2K setup.  Can someone
running dual monitors under Linux try it?
Attachment #109508 - Attachment is obsolete: true
Comment on attachment 115359 [details] [diff] [review]
patch v2

This fixes the problem on Windows, can someone with a Linux build environment
and multiple monitors please test this?

In the meantime, Ere any chance of reviewing this?  I won't ask for an sr until
I hear back from a Linux user.
Attachment #115359 - Flags: review?(ere)
Comment on attachment 115359 [details] [diff] [review]
patch v2

Two things: 
1. Maybe I'm just paranoid, but I think you should |if (screenManager)| and
screen before using them as the assertion won't prevent trying to use them. I'd
also check the return values of the called methods.
2. This one is the real problem. I have WinXP with Radeon 7500 and was running
Mozilla on the secondary display. Pressing F11 switched to Mozilla to
fullscreen, but it also caused the taskbar on the primary display to be hidden.
I believe it shouldn't be hidden when it's not on the same display.
Attachment #115359 - Flags: review?(ere) → review-
Thanks Ere, I can add those checks.

As for the task bar disappearing, that's what comment 39 talks about but it's
out of the scope of this bug.  Burpmaster, did you ever file a bug for changing
how we do full screen on Windows?
I just filed bug 195963 for the taskbar issue.  The patch for this bug should be
checked in (when it's ready) because it's an improvement that doesn't make
things any worse, and I think the remaining issue is elsewhere in the code anyway.
Attached patch patch v3Splinter Review
Attachment #115359 - Attachment is obsolete: true
Comment on attachment 116672 [details] [diff] [review]
patch v3

Ere, better?
Attachment #116672 - Flags: review?(ere)
Comment on attachment 116672 [details] [diff] [review]
patch v3

Definitely better :)
r=ere@atp.fi
Attachment #116672 - Flags: review?(ere) → review+
Comment on attachment 116672 [details] [diff] [review]
patch v3

Jag, how about some sr-lovin'?
Attachment #116672 - Flags: superreview?(jaggernaut)
This just makes the window full screen on the monitor it's on right?  And not
across all screens?  Good good.
You are correct, sir.
Attachment #116672 - Flags: superreview?(jaggernaut) → superreview?(hewitt)
Comment on attachment 116672 [details] [diff] [review]
patch v3

sr=jag
Attachment #116672 - Flags: superreview?(hewitt) → superreview+
Comment on attachment 116672 [details] [diff] [review]
patch v3

Aw man, I never checked this in.  Requesting a= for 1.4.  This is a low-impact
fix that gets full screen mode working as expected on multiple monitor setups.
Attachment #116672 - Flags: approval1.4b+
Attachment #116672 - Flags: approval1.4b+ → approval1.4b?
Comment on attachment 116672 [details] [diff] [review]
patch v3

a=sspitzer, it doesn't look like it will affect single screen users.

if you don't have all the platforms to test (linux, mac & windows), maybe you
can ask around on irc to get people to verify.
Attachment #116672 - Flags: approval1.4b? → approval1.4b+
Before I go trolling on IRC, is there somone with a linux or mac build env
paying attention to this bug that can double-check the fix?
Assignee: hewitt → dean_tessman
Status: ASSIGNED → NEW
Really, this is cross-platform code so it _should_ work on all platforms.  If it
doesn't work then it's more likely a bug in that platform's screen rectangle
functions and not this code.
Status: NEW → ASSIGNED
No testers == nobody really wants this fixed...??
I'd really like it fixed, but am on Windows.  =(.  The current state fullscreen
is in now is really bad.

Before, at least it maximized to the first monitor, now it just puts itself in a
100x50 window in the corner.  This is on 1.4a.

Thanks for you hard work, I would really love to see your patch.  I don't think
it could be any worse that the current code, unless it formats the hard disk, etc.
Comment on attachment 116672 [details] [diff] [review]
patch v3

requesting approval for 1.4.  caillon tested this on his single-monitor linux
and fullscreen still works as expected.  burpmaster tested it on his
dual-monitor windows setup with no problem.  seeing as this is xp code, it
should work on all platforms.
Attachment #116672 - Flags: approval1.4?
Comment on attachment 116672 [details] [diff] [review]
patch v3

a=asa (on behalf of drivers) for checkin to 1.4. Please be on the lookout for
any incoming regression reports and be ready to correct problems or back out
the changes.
Attachment #116672 - Flags: approval1.4b+
Attachment #116672 - Flags: approval1.4?
Attachment #116672 - Flags: approval1.4+
dwitte checked this in for me.
Status: ASSIGNED → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
*** Bug 188436 has been marked as a duplicate of this bug. ***
Hi, guys, I've tried the 1.4 rc1 and fullscreen mode on my second monitor.  The
new code works much better than before, but there is a strange side effect.

When I enable fullscreen mode on the second monitor, the taskbar (on the first)
disappears.  When I click on the first monitor, it reappears.  It is not a big
problem, but certainly annoying as it flickers on and off.

I'm on Win XP, BTW.
That last issue is covered in bug 195963.
*** Bug 151816 has been marked as a duplicate of this bug. ***
Keywords: helpwanted
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: