To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=116307





------- Additional comments from er...@openoffice.org Wed Jan 12 12:48:58 +0000 
2011 -------
@af:

> If I understand you correctly then the dialog box fox selecting 
> the screen works as expected. 

Yes it does

> It just is not very user friendly?

In fact, the right user frendly behavior woud be to NOT have to open any dialog
box at all.


> Yes, I agree with you on that.

:-) 

> But I have another idea of a solution: 
> Add a button to the presenter screen for exchanging the displays.

Well, I agree with that, but with this solution, we do not avoid the user to
click. The initial request is : open the file, and launch the presenter screen
on the right display, doing nothing else. Imagine somebody double clicking on
the .odp document : the result is systematicaly wrong, because the monitors are
swaped by default.


> Can you be more specific about the details? 

I'll try

Please note that most of the issue is caused by the fact, that there is no other
way to exchange the monitors than opening the dialog box AND click OK 

(this is imho, due to a deep limitation in OpenOffice.org, asking to click on OK
buttons with modal dialogs, but that's another debate ;-)  )

> How to programatically identify the displays of laptop, 
> beamer, desktop pc, etc.

I traced on Mac and Linux (not Windows), and so far, when only one monitor is
detected, it is seen as number 0

My choice is : the Presenter screen must be blind and rely on what the 
void SdStartPresentationDlg::InitMonitorSettings() returns (
sd/source/ui/dlg/present.cxx:187 )

How does it work ? 
sd/source/ui/present.cxx and sd/source/ui/slideshow/slideshow.cxx will do the 
job

The principle is simple to add +1 to the selected monitor, and let the Presenter
screen use them

1) Modifications in present.cxx 

SdStartPresentationDlg::InitMonitorSettings() instantiates xMultiMon instance.
The number of monitors is returned by mnMonitors = xMultiMon->getCount() 

If mnMonitors is <= to 1, no need to use the PresenterScreen.

In the opposite case, means  if two or more monitors are detected, we are in the
case the Presenter screen is used. In this case, we check for system properties
MultiDisplay (boolean), and DefaultDisplay ( nPrimaryIndex ) will help.  Last if
bMultiScreen is true, we'll not start the Presenter screen either, because it
means the frame is shared in several monitors, and it does not make sense to use
the presenter screen here.

Behind the UNO interface, we have in fact the real work done in vcl. 
e.g. GetDefaultDisplayNumber is defined vcl/inc/salsys.hxx and implemented in
svapp.cxx, in Application::GetDefaultDisplayNumber(), itself using
pSys->GetDisplayScreenCount() ( pSys is a pointer of SalSystem object type,
defined in salsys.hxx ).

What I did is : 

if !bMultiScreen and nMonitor > 0 

and in the case the nSelected == 0 ( the default display ), then I select
nPrimaryIndex + 1 as default display.

In present.cxx:  maLBMonitor.SelectEntryPos( (USHORT)nSelected ) means that the
selected monitor who will appear in the listbox (if ever we open the dialog box)
is the one matching with nPrimaryIndex +1

2) Modifications in sd/source/ui/slideshow/slideshow.cxx 

Because the Presenter screen has no setter, we do the work when starting the
presentation, more precisely in void SlideShow::StartFullscreenPresentation( ) :


pWorkWindow->StartPresentationMode( TRUE,
mpDoc->getPresentationSettings().mbAlwaysOnTop ? PRESENTATION_HIDEALLAPPS : 0,
nDisplay +1 

=> this exactly forces to display the presentation on the right monitor, doing
nothing.


At the end, in PresenterScreen.cxx, I did :

- increment the nScreenCount  and nScreenNumber, to match the case ( nMonitor > 
1)
- not swap the monitors, because it is no longer needed.


Unfortunaly, my patch is not perfect and needs some work. 

Sorry if I was not clear, but I'm not a native speaker.  HTH

---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@graphics.openoffice.org
For additional commands, e-mail: issues-h...@graphics.openoffice.org


---------------------------------------------------------------------
To unsubscribe, e-mail: allbugs-unsubscr...@openoffice.org
For additional commands, e-mail: allbugs-h...@openoffice.org

Reply via email to