From 8f30149c061f177bb6d2a28ca650a5d0acda9509 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 31 Jul 2009 15:16:11 +0000 Subject: [PATCH] * Work-in-progress commit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@32023 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/preferences/screen/ScreenMode.cpp | 20 ++++++++++++++++++++ src/preferences/screen/ScreenMode.h | 4 +++- src/preferences/screen/ScreenSettings.cpp | 5 +++++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/preferences/screen/ScreenMode.cpp b/src/preferences/screen/ScreenMode.cpp index 6461586794..8b5d4e37a5 100644 --- a/src/preferences/screen/ScreenMode.cpp +++ b/src/preferences/screen/ScreenMode.cpp @@ -322,6 +322,26 @@ ScreenMode::GetRefreshLimits(const screen_mode& mode, float& min, float& max) } +status_t +ScreenMode::GetMonitorInfo(monitor_info& info, float* _diagonalInches) +{ + BScreen screen(fWindow); + status_t status = screen.GetMonitorInfo(&info); + if (status != B_OK) + return status; + + if (_diagonalInches != NULL) { + *_diagonalInches = sqrt(info.width * info.width + + info.height * info.height) / 2.54; + } + + if (!strcmp(info.vendor, "LEN")) + strcpy(info.vendor, "Lenovo"); + // TODO: replace more vendor strings with something readable + return B_OK; +} + + screen_mode ScreenMode::ModeAt(int32 index) { diff --git a/src/preferences/screen/ScreenMode.h b/src/preferences/screen/ScreenMode.h index 775f775b7e..e51a36212b 100644 --- a/src/preferences/screen/ScreenMode.h +++ b/src/preferences/screen/ScreenMode.h @@ -49,7 +49,9 @@ class ScreenMode { void UpdateOriginalModes(); bool SupportsColorSpace(const screen_mode& mode, color_space space); - status_t GetRefreshLimits(const screen_mode& mode, float& min, float& max); + status_t GetRefreshLimits(const screen_mode& mode, float& min, + float& max); + status_t GetMonitorInfo(monitor_info& info, float* _diagonalInches); screen_mode ModeAt(int32 index); int32 CountModes(); diff --git a/src/preferences/screen/ScreenSettings.cpp b/src/preferences/screen/ScreenSettings.cpp index 8ae68624fe..4871cc7eaa 100644 --- a/src/preferences/screen/ScreenSettings.cpp +++ b/src/preferences/screen/ScreenSettings.cpp @@ -34,6 +34,11 @@ ScreenSettings::ScreenSettings() file.Read(&fWindowFrame, sizeof(BRect)); // make sure the window is visible on screen + if (fWindowFrame.Width() > screenFrame.Width()) + fWindowFrame.right = fWindowFrame.left + 450; + if (fWindowFrame.Height() > screenFrame.Height()) + fWindowFrame.bottom = fWindowFrame.top + 250; + if (screenFrame.right >= fWindowFrame.left + 40 && screenFrame.bottom >= fWindowFrame.top + 40 && screenFrame.left <= fWindowFrame.right - 40