hrev47690 adds 1 changeset to branch 'master' old head: 613468813b53f9dbc0d8b7b41276f517789f07ee new head: 9bac05ae6cce56d06edcdc28036bf104af7ca2a3 overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=9bac05a+%5E6134688 ---------------------------------------------------------------------------- 9bac05a: Make the "no preview" screen work in all cases * HideNoPreview() was never called... * Use a BCardLayout to make it easier to know which of the two screens is shown. [ Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev47690 Commit: 9bac05ae6cce56d06edcdc28036bf104af7ca2a3 URL: http://cgit.haiku-os.org/haiku/commit/?id=9bac05a Author: Adrien Destugues <pulkomandy@xxxxxxxxxxxxx> Date: Thu Aug 14 10:38:48 2014 UTC ---------------------------------------------------------------------------- 2 files changed, 25 insertions(+), 20 deletions(-) src/preferences/screensaver/PreviewView.cpp | 37 +++++++++++--------- .../screensaver/ScreenSaverWindow.cpp | 8 +++-- ---------------------------------------------------------------------------- diff --git a/src/preferences/screensaver/PreviewView.cpp b/src/preferences/screensaver/PreviewView.cpp index 246e0b7..fc5c74f 100644 --- a/src/preferences/screensaver/PreviewView.cpp +++ b/src/preferences/screensaver/PreviewView.cpp @@ -12,6 +12,7 @@ #include <iostream> +#include <CardLayout.h> #include <Catalog.h> #include <GroupLayout.h> #include <Point.h> @@ -65,6 +66,21 @@ PreviewView::PreviewView(const char* name) // We draw the "monitor" around the preview, hence the strange insets. layout->SetInsets(10, 8, 11, 16); SetLayout(layout); + + fNoPreview = new BStringView("no preview", + B_TRANSLATE("No preview available")); + + fNoPreview->Hide(); + + BView* container = new BView("preview container", 0); + container->SetLayout(new BCardLayout()); + AddChild(container); + container->SetViewColor(0, 0, 0); + container->SetLowColor(0, 0, 0); + container->AddChild(fNoPreview); + + fNoPreview->SetHighColor(255, 255, 255); + fNoPreview->SetAlignment(B_ALIGN_CENTER); } @@ -110,7 +126,7 @@ PreviewView::AddPreview() fSaverView = new BView("preview", B_WILL_DRAW); fSaverView->SetViewColor(0, 0, 0); fSaverView->SetLowColor(0, 0, 0); - AddChild(fSaverView); + ChildAt(0)->AddChild(fSaverView); float aspectRatio = 4.0f / 3.0f; // 4:3 monitor @@ -120,20 +136,9 @@ PreviewView::AddPreview() fSaverView->SetExplicitSize(BSize(previewWidth, previewHeight)); fSaverView->ResizeTo(previewWidth, previewHeight); - fNoPreview = new BStringView("no preview", - B_TRANSLATE("No preview available")); - - fNoPreview->Hide(); fNoPreview->SetExplicitSize(BSize(previewWidth, previewHeight)); fNoPreview->ResizeTo(previewWidth, previewHeight); - AddChild(fNoPreview); - - fNoPreview->SetViewColor(0, 0, 0); - fNoPreview->SetLowColor(0, 0, 0); - fNoPreview->SetHighColor(255, 255, 255); - fNoPreview->SetAlignment(B_ALIGN_CENTER); - return fSaverView; } @@ -142,7 +147,7 @@ BView* PreviewView::RemovePreview() { if (fSaverView != NULL) - RemoveChild(fSaverView); + ChildAt(0)->RemoveChild(fSaverView); BView* saverView = fSaverView; fSaverView = NULL; @@ -160,14 +165,12 @@ PreviewView::SaverView() void PreviewView::ShowNoPreview() const { - fSaverView->Hide(); - fNoPreview->Show(); + ((BCardLayout*)ChildAt(0)->GetLayout())->SetVisibleItem((int32)0); } void PreviewView::HideNoPreview() const { - fNoPreview->Hide(); - fSaverView->Show(); + ((BCardLayout*)ChildAt(0)->GetLayout())->SetVisibleItem(1); } diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index 7714f17..14fc4a5 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -828,11 +828,13 @@ ModulesView::_OpenSaver() BScreenSaver* saver = ScreenSaver(); if (saver != NULL && fSettingsView != NULL) { saver->StartConfig(fSettingsView); - if (saver->StartSaver(view, true) == B_OK) + if (saver->StartSaver(view, true) == B_OK) { + fPreviewView->HideNoPreview(); fSaverRunner->Run(); - else + } else fPreviewView->ShowNoPreview(); - } + } else + fPreviewView->ShowNoPreview(); if (fSettingsView->ChildAt(0) == NULL) { // There are no settings at all, we add the module name here to