From f20266f9f43ab3956de271f696c769db02992e87 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 1 Oct 2012 12:56:28 +0200 Subject: fix QWidget::setWindowFilePath on Mac OS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTBUG-27299 Change-Id: I4dddbb9690aac327ad33477d8cea9afa84d10eb3 Reviewed-by: Friedemann Kleint Reviewed-by: Morten Johan Sørvig --- src/plugins/platforms/cocoa/qcocoawindow.h | 1 + src/plugins/platforms/cocoa/qcocoawindow.mm | 11 +++++++++++ src/widgets/kernel/qwidget.cpp | 4 ++-- src/widgets/kernel/qwidget_p.h | 2 +- src/widgets/kernel/qwidget_qpa.cpp | 10 ++++++++++ 5 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h index 5358a39bc4..20648e8c61 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.h +++ b/src/plugins/platforms/cocoa/qcocoawindow.h @@ -101,6 +101,7 @@ public: Qt::WindowFlags setWindowFlags(Qt::WindowFlags flags); Qt::WindowState setWindowState(Qt::WindowState state); void setWindowTitle(const QString &title); + void setWindowFilePath(const QString &filePath); void raise(); void lower(); void propagateSizeHints(); diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm index 7cebf514c3..daed7c3fde 100644 --- a/src/plugins/platforms/cocoa/qcocoawindow.mm +++ b/src/plugins/platforms/cocoa/qcocoawindow.mm @@ -45,6 +45,7 @@ #include "qcocoaglcontext.h" #include "qcocoahelpers.h" #include "qnsview.h" +#include #include #include #include @@ -409,6 +410,16 @@ void QCocoaWindow::setWindowTitle(const QString &title) CFRelease(windowTitle); } +void QCocoaWindow::setWindowFilePath(const QString &filePath) +{ + QCocoaAutoReleasePool pool; + if (!m_nsWindow) + return; + + QFileInfo fi(filePath); + [m_nsWindow setRepresentedFilename: fi.exists() ? QCFString::toNSString(filePath) : @""]; +} + void QCocoaWindow::raise() { //qDebug() << "raise" << this; diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 84bb5a6685..ffcaa15527 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -5725,7 +5725,7 @@ void QWidget::setWindowFilePath(const QString &filePath) void QWidgetPrivate::setWindowFilePath_helper(const QString &filePath) { if (extra->topextra && extra->topextra->caption.isEmpty()) { -#ifdef Q_WS_MAC +#ifdef Q_OS_MAC setWindowTitle_helper(QFileInfo(filePath).fileName()); #else Q_Q(QWidget); @@ -5733,7 +5733,7 @@ void QWidgetPrivate::setWindowFilePath_helper(const QString &filePath) setWindowTitle_helper(q->windowTitle()); #endif } -#ifdef Q_WS_MAC +#ifdef Q_OS_MAC setWindowFilePath_sys(filePath); #endif } diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h index 84785dadf2..eb67f756e8 100644 --- a/src/widgets/kernel/qwidget_p.h +++ b/src/widgets/kernel/qwidget_p.h @@ -477,6 +477,7 @@ public: void setWindowIconText_sys(const QString &cap); void setWindowIconText_helper(const QString &cap); void setWindowTitle_sys(const QString &cap); + void setWindowFilePath_sys(const QString &filePath); #ifndef QT_NO_CURSOR void setCursor_sys(const QCursor &cursor); @@ -766,7 +767,6 @@ public: void update_sys(const QRegion &rgn); void setGeometry_sys_helper(int, int, int, int, bool); void updateMaximizeButton_sys(); - void setWindowFilePath_sys(const QString &filePath); void createWindow_sys(); void recreateMacWindow(); void setSubWindowStacking(bool set); diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp index 7c84c7fc29..c6680eacec 100644 --- a/src/widgets/kernel/qwidget_qpa.cpp +++ b/src/widgets/kernel/qwidget_qpa.cpp @@ -346,6 +346,16 @@ void QWidgetPrivate::setWindowTitle_sys(const QString &caption) } +void QWidgetPrivate::setWindowFilePath_sys(const QString &filePath) +{ + Q_Q(QWidget); + if (!q->isWindow()) + return; + + if (QWindow *window = q->windowHandle()) + window->setWindowFilePath(filePath); +} + void QWidgetPrivate::setWindowIcon_sys() { Q_Q(QWidget); -- cgit v1.2.3