summaryrefslogtreecommitdiffstats
path: root/chrome/browser/window_sizer.cc
diff options
context:
space:
mode:
authoridanan@chromium.org <idanan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-27 04:51:26 +0000
committeridanan@chromium.org <idanan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-27 04:51:26 +0000
commit2226eb1ef4b32cf154205505c4b5bc40327b6efe (patch)
tree3c875c5d9a8b3316a59517945e6011e9711d656f /chrome/browser/window_sizer.cc
parentdf2013932664ec3718248ed7c6f41445bb939a10 (diff)
downloadchromium_src-2226eb1ef4b32cf154205505c4b5bc40327b6efe.zip
chromium_src-2226eb1ef4b32cf154205505c4b5bc40327b6efe.tar.gz
chromium_src-2226eb1ef4b32cf154205505c4b5bc40327b6efe.tar.bz2
Issue 7318: Popup Titlebar Appears Under Windows Taskbar
Simple fix to make sure the task bar placement and size is taking into consideration when placing a new popup window. BUG=7318 Review URL: http://codereview.chromium.org/29002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@10585 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/window_sizer.cc')
-rw-r--r--chrome/browser/window_sizer.cc24
1 files changed, 24 insertions, 0 deletions
diff --git a/chrome/browser/window_sizer.cc b/chrome/browser/window_sizer.cc
index eddb42b..450fae4 100644
--- a/chrome/browser/window_sizer.cc
+++ b/chrome/browser/window_sizer.cc
@@ -180,6 +180,30 @@ void WindowSizer::GetBrowserWindowBounds(const std::wstring& app_name,
sizer.DetermineWindowBounds(specified_bounds, window_bounds, maximized);
}
+gfx::Point WindowSizer::GetDefaultPopupOrigin(const gfx::Size& size) {
+ RECT area;
+ SystemParametersInfo(SPI_GETWORKAREA, 0, &area, 0);
+ gfx::Point corner(area.left, area.top);
+
+ if (Browser* b = BrowserList::GetLastActive()) {
+ RECT browser;
+ HWND window = reinterpret_cast<HWND>(b->window()->GetNativeHandle());
+ if (GetWindowRect(window, &browser)) {
+ // Limit to not overflow the work area right and bottom edges.
+ gfx::Point limit(
+ std::min(browser.left + kWindowTilePixels, area.right-size.width()),
+ std::min(browser.top + kWindowTilePixels, area.bottom-size.height())
+ );
+ // Adjust corner to now overflow the work area left and top edges, so
+ // that if a popup does not fit the title-bar is remains visible.
+ corner = gfx::Point(
+ std::max(corner.x(), limit.x()),
+ std::max(corner.y(), limit.y())
+ );
+ }
+ }
+ return corner;
+}
///////////////////////////////////////////////////////////////////////////////
// WindowSizer, private: