From 07184a9e61bdfa436b189c1382c7792835e4db28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 15 Nov 2005 10:35:59 +0000 Subject: [PATCH] No longer ignores a failing SetMode() but will show an error request. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14936 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/preferences/screen/ScreenWindow.cpp | 32 +++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/preferences/screen/ScreenWindow.cpp b/src/preferences/screen/ScreenWindow.cpp index c41f7ea8d6..87e96eb36a 100644 --- a/src/preferences/screen/ScreenWindow.cpp +++ b/src/preferences/screen/ScreenWindow.cpp @@ -128,6 +128,20 @@ refresh_rate_to_string(float refresh, BString &string, } +static const char* +screen_errors(status_t status) +{ + switch (status) { + case B_ENTRY_NOT_FOUND: + return "Unknown Mode"; + // TODO: add more? + + default: + return strerror(status); + } +} + + // #pragma mark - @@ -921,10 +935,20 @@ ScreenWindow::Apply() return; } - if (fScreenMode.Set(fSelected) == B_OK) + status_t status = fScreenMode.Set(fSelected); + if (status == B_OK) { fActive = fSelected; - // ToDo: only show alert when this is an unknown mode - BWindow *window = new AlertWindow(this); - window->Show(); + // ToDo: only show alert when this is an unknown mode + BWindow* window = new AlertWindow(this); + window->Show(); + } else { + char message[256]; + snprintf(message, sizeof(message), + "The screen mode could not be set:\n\t%s\n", screen_errors(status)); + BAlert* alert = new BAlert("Screen Alert", message, "Okay", NULL, NULL, + B_WIDTH_AS_USUAL, B_WARNING_ALERT); + alert->Go(); + } } +