Skip to content

Commit 671603d

Browse files
committed
Fix modality bug
1 parent 2f97201 commit 671603d

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

platforms/qhaikuplatform/haiku/qhaikuwindow.cpp

+10-3
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,8 @@ QHaikuWindow::~QHaikuWindow()
292292

293293
void QHaikuWindow::setWindowFlags(Qt::WindowFlags flags)
294294
{
295+
windowFlags = flags;
296+
295297
Qt::WindowType type = static_cast<Qt::WindowType>(int(flags & Qt::WindowType_Mask)) ;
296298

297299
bool popup = (type == Qt::Popup);
@@ -477,17 +479,22 @@ void QHaikuWindow::setVisible(bool visible)
477479
m_window->Lock();
478480
if (window()->modality() == Qt::WindowModal ||
479481
window()->modality() == Qt::ApplicationModal) {
480-
m_window->SetFeel(B_MODAL_APP_WINDOW_FEEL);
482+
m_window->SetFeel(B_FLOATING_ALL_WINDOW_FEEL);
483+
}
484+
if (QGuiApplication::modalWindow() != NULL) {
485+
m_window->SetFeel(B_FLOATING_ALL_WINDOW_FEEL);
481486
}
482487
if (visible) {
483488
if (window()->type() == Qt::Popup) {
484489
m_window->SetWorkspaces(B_CURRENT_WORKSPACE);
485490
m_window->Show();
486-
m_window->Activate();
491+
m_window->Activate(true);
487492
} else
488493
m_window->Show();
489-
} else
494+
} else {
495+
setWindowFlags(windowFlags);
490496
m_window->Hide();
497+
}
491498

492499
m_window->Unlock();
493500

platforms/qhaikuplatform/haiku/qhaikuwindow.h

+1
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ class QHaikuWindow : public QObject, public QPlatformWindow
149149
WId m_winId;
150150
static QHash<WId, QHaikuWindow *> m_windowForWinIdHash;
151151

152+
Qt::WindowFlags windowFlags;
152153
bool m_positionIncludesFrame;
153154
bool m_visible;
154155
bool m_pendingGeometryChangeOnShow;

0 commit comments

Comments
 (0)