@@ -92,16 +92,6 @@ MainWindow::MainWindow(bool load_settings, QWidget* parent)
9292 find_dialog_(new FindObjectDialog(this )),
9393 goto_dialog_(new GotoLocationDialog(this , viewers_))
9494{
95- // Size and position the window
96- #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
97- QSize size = screen ()->availableGeometry ().size ();
98- #else
99- QSize size = QDesktopWidget ().availableGeometry (this ).size ();
100- #endif
101-
102- resize (size * 0.8 );
103- move (size.width () * 0.1 , size.height () * 0.1 );
104-
10595 QFont font (" Monospace" );
10696 font.setStyleHint (QFont::Monospace);
10797 script_->setWidgetFont (font);
@@ -399,8 +389,10 @@ MainWindow::MainWindow(bool load_settings, QWidget* parent)
399389 // Restore the settings (if none this is a no-op)
400390 QSettings settings (" OpenRoad Project" , " openroad" );
401391 settings.beginGroup (" main" );
402- restoreGeometry (settings.value (" geometry" ).toByteArray ());
403- restoreState (settings.value (" state" ).toByteArray ());
392+ // Save these for the showEvent as the window manager may not respect them
393+ // if restore here.
394+ saved_geometry_ = settings.value (" geometry" ).toByteArray ();
395+ saved_state_ = settings.value (" state" ).toByteArray ();
404396 QApplication::setFont (
405397 settings.value (" font" , QApplication::font ()).value <QFont>());
406398 hide_option_->setChecked (
@@ -438,6 +430,31 @@ MainWindow::MainWindow(bool load_settings, QWidget* parent)
438430 };
439431}
440432
433+ void MainWindow::showEvent (QShowEvent* event)
434+ {
435+ QWidget::showEvent (event);
436+
437+ if (!first_show_) {
438+ return ;
439+ }
440+
441+ if (saved_geometry_.has_value () && saved_state_.has_value ()) {
442+ restoreGeometry (saved_geometry_.value ());
443+ restoreState (saved_state_.value ());
444+ } else {
445+ // Default size and position the window
446+ #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
447+ QSize size = screen ()->availableGeometry ().size ();
448+ #else
449+ QSize size = QDesktopWidget ().availableGeometry (this ).size ();
450+ #endif
451+
452+ resize (size * 0.8 );
453+ move (size.width () * 0.1 , size.height () * 0.1 );
454+ }
455+ first_show_ = false ;
456+ }
457+
441458MainWindow::~MainWindow ()
442459{
443460 auto * gui = Gui::get ();
@@ -1862,4 +1879,4 @@ void MainWindow::reportSlackHistogramPaths(
18621879
18631880 timing_widget_->reportSlackHistogramPaths (report_pins, path_group_name);
18641881}
1865- } // namespace gui
1882+ } // namespace gui
0 commit comments