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