void pWindow::setGeometry(const Geometry &geometry_) { locked = true; OS::processEvents(); QApplication::syncX(); Geometry geometry = geometry_, margin = frameMargin(); setResizable(window.state.resizable); qtWindow->move(geometry.x - frameMargin().x, geometry.y - frameMargin().y); //qtWindow->adjustSize() fails if larger than 2/3rds screen size qtWindow->resize(qtWindow->sizeHint()); qtWindow->setMinimumSize(1, 1); qtContainer->setMinimumSize(1, 1); for(auto &layout : window.state.layout) { geometry = geometry_; geometry.x = geometry.y = 0; layout.setGeometry(geometry); } locked = false; }
void pWindow::setFullScreen(bool fullScreen) { if(fullScreen == false) { setResizable(window.state.resizable); qtWindow->showNormal(); qtWindow->adjustSize(); } else { qtLayout->setSizeConstraint(QLayout::SetDefaultConstraint); qtContainer->setFixedSize(Desktop::size().width - frameMargin().width, Desktop::size().height - frameMargin().height); qtWindow->showFullScreen(); } }
void pWindow::setFullScreen(bool fullScreen) { locked = true; if(fullScreen == false) { SetWindowLongPtr(hwnd, GWL_STYLE, WS_VISIBLE | (window.state.resizable ? ResizableStyle : FixedStyle)); setGeometry(window.state.geometry); } else { SetWindowLongPtr(hwnd, GWL_STYLE, WS_VISIBLE | WS_POPUP); Geometry margin = frameMargin(); setGeometry({ margin.x, margin.y, GetSystemMetrics(SM_CXSCREEN) - margin.width, GetSystemMetrics(SM_CYSCREEN) - margin.height }); } locked = false; }
void pWindow::setFullScreen(bool fullScreen) { if(fullScreen == false) { setResizable(window.state.resizable); qtWindow->showNormal(); qtWindow->adjustSize(); } else { Geometry geometry = OS::desktopGeometry(), margin = frameMargin(); qtLayout->setSizeConstraint(QLayout::SetDefaultConstraint); qtContainer->setFixedSize(geometry.width - margin.width, geometry.height - margin.height); qtWindow->showFullScreen(); } }
void pWindow::setGeometry(Geometry geometry) { locked = true; Application::processEvents(); QApplication::syncX(); Geometry margin = frameMargin(); setResizable(window.state.resizable); qtWindow->move(geometry.x - frameMargin().x, geometry.y - frameMargin().y); //qtWindow->adjustSize() fails if larger than 2/3rds screen size qtWindow->resize(qtWindow->sizeHint()); if(window.state.resizable) { //required to allow shrinking window from default size qtWindow->setMinimumSize(1, 1); qtContainer->setMinimumSize(1, 1); } for(auto& layout : window.state.layout) { geometry.x = geometry.y = 0; layout.setGeometry(geometry); } locked = false; }
void pWindow::setGeometry(const Geometry &geometry) { locked = true; Geometry margin = frameMargin(); SetWindowPos( hwnd, NULL, geometry.x - margin.x, geometry.y - margin.y, geometry.width + margin.width, geometry.height + margin.height, SWP_NOZORDER | SWP_FRAMECHANGED ); SetWindowPos(hstatus, NULL, 0, 0, 0, 0, SWP_NOZORDER | SWP_FRAMECHANGED); for(auto &layout : window.state.layout) { Geometry geom = this->geometry(); geom.x = geom.y = 0; layout.setGeometry(geom); } locked = false; }
Geometry pWindow::geometry() { Geometry margin = frameMargin(); RECT rc; if(IsIconic(hwnd)) { //GetWindowRect returns -32000(x),-32000(y) when window is minimized WINDOWPLACEMENT wp; GetWindowPlacement(hwnd, &wp); rc = wp.rcNormalPosition; } else { GetWindowRect(hwnd, &rc); } signed x = rc.left + margin.x; signed y = rc.top + margin.y; unsigned width = (rc.right - rc.left) - margin.width; unsigned height = (rc.bottom - rc.top) - margin.height; return { x, y, width, height }; }