mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
Support JavaScript window.moveTo/By() and resizeTo/By() (fixes #698)
Adds new CefDisplayHandler::OnContentsBoundsChange and CefDisplayHandler::GetRootWindowScreenRect callbacks. cefclient: Implement the above callbacks and call CefBrowserHost::NotifyScreenInfoChanged when the root window bounds change. cefclient: osr: Use real screen bounds by default. Pass `--fake-screen-bounds` for the old default behavior. Load https://tests/window in cefclient for additional implementation details and usage examples.
This commit is contained in:
@ -42,4 +42,21 @@ void DeviceToLogical(CefTouchEvent& value, float device_scale_factor) {
|
||||
value.y = DeviceToLogical(value.y, device_scale_factor);
|
||||
}
|
||||
|
||||
void ConstrainWindowBounds(const CefRect& display, CefRect& window) {
|
||||
if (window.x < display.x) {
|
||||
window.x = display.x;
|
||||
}
|
||||
if (window.y < display.y) {
|
||||
window.y = display.y;
|
||||
}
|
||||
window.width = std::clamp(window.width, 100, display.width);
|
||||
window.height = std::clamp(window.height, 100, display.height);
|
||||
if (window.x + window.width >= display.x + display.width) {
|
||||
window.x = display.x + display.width - window.width;
|
||||
}
|
||||
if (window.y + window.height >= display.y + display.height) {
|
||||
window.y = display.y + display.height - window.height;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace client
|
||||
|
Reference in New Issue
Block a user