Keymap: improve initial window size, and position.

* By making it scale with the font size, and by using
  BWindow::MoveOnScreen().
This commit is contained in:
Axel Dörfler
2015-09-14 20:45:53 +02:00
parent 3f772f525b
commit 881325a06e
+5 -18
View File
@@ -1,5 +1,5 @@
/*
* Copyright 2004-2014 Haiku, Inc. All rights reserved.
* Copyright 2004-2015 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
@@ -153,6 +153,7 @@ KeymapWindow::KeymapWindow()
ResizeTo(windowFrame.Width(), windowFrame.Height());
MoveTo(windowFrame.LeftTop());
MoveOnScreen();
// TODO: this might be a bug in the interface kit, but scrolling to
// selection does not correctly work unless the window is shown.
@@ -1057,6 +1058,9 @@ KeymapWindow::_LoadSettings(BRect& windowFrame, BString& keyboardLayout)
windowFrame.right = 899;
windowFrame.bottom = 349;
}
float scaling = be_plain_font->Size() / 12.0f;
windowFrame.right *= scaling;
windowFrame.bottom *= scaling;
keyboardLayout = "";
@@ -1074,23 +1078,6 @@ KeymapWindow::_LoadSettings(BRect& windowFrame, BString& keyboardLayout)
}
}
if (!screen.Frame().Contains(windowFrame)) {
// Make sure the window is not larger than the screen
if (windowFrame.Width() > screen.Frame().Width())
windowFrame.right = windowFrame.left + screen.Frame().Width();
if (windowFrame.Height() > screen.Frame().Height())
windowFrame.bottom = windowFrame.top + screen.Frame().Height();
// Make sure the window is on screen (and center if it isn't)
if (windowFrame.left < screen.Frame().left
|| windowFrame.right > screen.Frame().right
|| windowFrame.top < screen.Frame().top
|| windowFrame.bottom > screen.Frame().bottom) {
windowFrame.OffsetTo(BAlert::AlertPosition(windowFrame.Width(),
windowFrame.Height()));
}
}
return status;
}