Philipp Lohmann - Sun Germany wrote:
Hi,
David Fraser wrote:
Hi
I've been working on issue 12719, Support for multiscreen displays
(dual monitors).
The proposal there is to do a first level patch that enables an
Impress user to select the monitor to display presentations on in the
options, and then to go through the more complex process of doing a
presentation mode.
i've seen you UI proposal (the dialog entry) and it would be ok with
me. Of course this is really something for the impress developers but
since the issue is currently owned by cl they are already in the boat.
Thanks for the feedback
So for the purpose of the first level patch, it is neccessary to
specify for a window which display it should operate on.
I have done an initial patch for Windows that allows displaying on
other displays (attached to the issue), by altering
ImplSalCalcFullScreenSize (since this is only used in full-screen
mode), but there is no way of specifying it in the structure. It
should be possible to do this at least for full-screen windows, but
it may be desirable to allow it for other windows as well. For
example, if a window is already opened on a secondary display and it
pops up a dialog box, it may be helpful to know which display the
dialog box should be on (or not). But the main usage is likely for
full-screen displays of Impress presentations.
Currently there is an pFrame->mbFullScreen which specifies whether
something should run full-screen or not.
So I would like to know what we should add to specify the display.
The question is whether we want the full blown solution (setting the
screen number possibly for every window) or if a special case for the
fullscreen presentation is enough. Before you say you want the full
solution: this can imply a lot of complexity (e.g. checking whether a
new frame is necessary, what should be done with a window that changes
the screen but has a parent on the other screen) with not necessarily
much user benefit. Of course it might be interesting to have documents
on different screens; this is not so much a matter on windows where
you can move windows between screens anyway, but on classic Unix
displays (that is not Xinerama configured screens) you cannot do that.
So lets leave this issue for now...
The fullscreen presentation seems to be the most important issue
however. For this case I'd propose to add a parameter to the
WorkWindow::ShowFullScreenMode method, e.g.
ShowFullScreen( BOOL bFullScreen, SHORT nScreen = -1 );
The default for the screen number to -1 should produce the current
behaviour (meaning do nothing special).
OK that sounds good.
On Windows there are methods that allow getting the total number of
displays and enumerating them. There is no specific "display number"
as such, but I think the displays are always returned by the
enumerator in the same order. There is also a string specifying the
name of each display but this is not user-presentable
(".\\DISPLAY\\1" etc), and I am not sure what different forms it can
take.
I think the numbering approach is feasible; on Unix the screens are
numbered anyway, while on Windows there are at least numbers for the
monitors in the display properties dialog, so the concept should be
not so uncommon to the user. Question: how do other Windows
applications with multimonitor support handle this ?
Powerpoint does it by giving you a drop down box with different displays
("Primary Display", "Monitor 2" etc, can't remember the exact details
but we should research).
It would be neccessary to investigate the other display types (mainly
X with Xinerama) to determine how they handle multi-screen displays,
I intend to do this shortly.
X displays either have different screens, which are completely
separate (e.g. no window movement between them, no inter screenb copy
operations), or they are configured in Xinerama mode which means to
the application there is only one screen, but one can query what
coordinates each display is at.
OK so it sounds like we should be able to handle them in a fairly
similar way for the full-screen mode i.e. for X displays that are
separate screens we could select a screen and display on that, for
Xinerama, we get the coordinates for the display like we do on Windows
David
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]