<html>
<body>
<div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
<table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tr>
<td>
This is an automatically generated e-mail. To reply, visit:
<a href="https://git.reviewboard.kde.org/r/126198/">https://git.reviewboard.kde.org/r/126198/</a>
</td>
</tr>
</table>
<br />
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<p style="margin-top: 0;">On May 17th, 2016, 4:37 p.m. CEST, <b>Martin Gräßlin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">given that Plasma integration got removed I suggest to create a dedicated osx-integration repository for it as well.</p></pre>
</blockquote>
<p>On May 17th, 2016, 5:29 p.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I quite like the way things are, but yes, I've played with that idea. </p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I guess I can simply fork <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">frameworkintegration</code>, change the project name in the toplevel CMake file and strip everything except for the platformtheme.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">How does this work from that point onwards?</p></pre>
</blockquote>
<p>On May 17th, 2016, 8:48 p.m. CEST, <b>Martin Gräßlin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I guess I can simply fork frameworkintegration, change the project name in the toplevel CMake file and strip everything except for the platformtheme.</p>
</blockquote>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">That's kind of how I did it for plasma-integration with git filter-tree.</p>
<blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">How does this work from that point onwards?</p>
</blockquote>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">My suggestion would be to create something like an "OSX integration" project in the metadata and have then all your repositories grouped there including the new platform theme.</p></pre>
</blockquote>
<p>On May 19th, 2016, 12:39 p.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This is something I'm completely new to; what metadata are we talking about here?
Also, can anyone with commit access to existing repositories also create new ones on the server, and in what category would you suggest putting this?</p></pre>
</blockquote>
<p>On May 19th, 2016, 2:12 p.m. CEST, <b>Boudhayan Gupta</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">For now, start with a scratch repo. Sysadmin will take care of the rest for you.</p></pre>
</blockquote>
<p>On May 19th, 2016, 2:59 p.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">As I said, creating or proposing a new KDE package/repository is completely new for me, even that instruction is still ambiguous. I take it you're not talking about a scratch repo that exists only on one of my disks, possibly not even on a remote mirror like github, but rather something that would alert the sysadmins who will then take the appropriate actions?</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I guess I should look through the developer/contributor instructions again, I most certainly skipped this level of information when I first (and last...) read that documentation.</p></pre>
</blockquote>
<p>On May 19th, 2016, 3:10 p.m. CEST, <b>Elvis Angelaccio</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Here you can find the instructions to create a scratch repo: https://community.kde.org/Sysadmin/GitKdeOrgManual#Personal_scratch_repositories</p></pre>
</blockquote>
<p>On May 19th, 2016, 3:46 p.m. CEST, <b>René J.V. Bertin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">ah, great, thanks. Looks exactly what I need except that it doesn't appear to say anything about the metadata Martin mentions. But it's a start :)</p></pre>
</blockquote>
<p>On May 20th, 2016, 8:42 a.m. CEST, <b>Martin Gräßlin</b> wrote:</p>
<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The metadata is in kde-build-metadata.git (https://quickgit.kde.org/?p=kde-build-metadata.git )</p></pre>
</blockquote>
</blockquote>
<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Right, that metadata :)
Seems that will be among the last things to update; I don't see any project from scratch mentioned in that repo.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I've begun setting up an OS X Integration project. For some reason my git install lacks the filter-tree command so I've gone the manual route copying the frameworkintegration repo with the patch from this RR. I've removed all files that shouldn't be included, changed names etc (haven't pruned the dependencies yet), and committed to <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">scratch/rjvbb/osx-integration</code>. Very much a work-in-progress; I'll have to update my own install (and "ports" tree) to 5.22 before I can check building (though I presume it <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">should</em> build against 5.20.0 if I downgrade the dependency requirement).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I just realise this gives the repo a commit history that's a <em style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: normal;">lot</em> larger than the current code base. Is there something I should and could do about that?</p></pre>
<br />
<p>- René J.V.</p>
<br />
<p>On May 16th, 2016, 9:49 p.m. CEST, René J.V. Bertin wrote:</p>
<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
<tr>
<td>
<div>Review request for KDE Software on Mac OS X, KDE Frameworks, Plasma, and Valorie Zimmerman.</div>
<div>By René J.V. Bertin.</div>
<p style="color: grey;"><i>Updated May 16, 2016, 9:49 p.m.</i></p>
<div style="margin-top: 1.5em;">
<b style="color: #575012; font-size: 10pt;">Repository: </b>
frameworkintegration
</div>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The KdePlatformTheme plugin can be enabled on OS X with a minimal patch to Qt5; all that is required is to include the <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">qgenericunixservices</code> and <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">qgenericunixthemes</code> components in the build, and to append <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">"kde"</code> to the list returned by <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QCocoaIntegration::themeNames()</code> for instance under the condition that <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KDE_SESSION_VERSION</code> is set to a suitable value in the environment.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This will allow KF5 and Qt5 applications to use the theme selected through KDE if FrameworkIntegration is installed and KDE_SESSION_VERSION is set, which seems like a sufficiently specific set of conditions that is easy to avoid by users who prefer to use the Mac native theme.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">While requestion the KDE theme is also possible through <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">-style kde</code> or <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">env QT_STYLE_OVERRIDE=kde</code> the use of the KdePlatformTheme plugin appears to be the only way to get the full theme, including the font and colour selection. In my opinion it is above all the font customisation which is a very welcome feature for Qt/Mac; by default Qt applications use the default system font (Lucida Grande 13pt or even 14pt) throughout. This is a good UI font, but not at that size (and most "native" OS X applications indeed use a range of smaller sizes, depending on role.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">It does have introduce a number of regressions, which the current patch aims to address. The most visible and problematic of these regressions is the loss of the Mac-style menu bar and thus of all menu items (actions).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The fix is straightforward : on OS X (and similarly affected platforms?), an instance of the native Cocoa platform theme is created through the private API, and used as a fallback rather than immediately falling back to the default implementations from <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QPlatformTheme</code>. In addition, methods missing from (not overridden by) <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">KdePlatformTheme</code> are provided on OS X and call the corresponding methods from the native theme. It is this change which restores the menubar and even the Dock menu functionality.
One minor regression remains but should be easy to fix (elsewhere?): the Preferences menu loses its keyboard shortcut (Command-,).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Given the fallback nature of the native platform instance I have preferred to print a warning rather than using something like <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">qFatal</code>, above all because the message printed by qFatal tends to get lost on OS X. I can replace my use of <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">qWarning</code> with a dialog giving the choice between continuing or exiting the application - code that would be called in the menu methods because only there is it certain that the application actually needs a menubar.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">In line with experience and feedback from the KDE(4)-Mac community I have decided to force the use of native dialogs rather than the ones from the KdePlatformPlugin.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">In addition I set the fallback value for <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">ShowIconsOnPushButtons</code> to false in line with platform guidelines, and ensure that the autotests are not built as app bundles.</p></pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
<tr>
<td>
<pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">On Mac OS X with Qt 5.5.1, KF5 frameworks 5.16.0 and QtCurve git/head.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">I have not verified to what extent my use of a private <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">QGuiApplication</code> API links builds to a specific Qt version (I consider that nothing shocking and a minor price to pay).</p>
<blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<blockquote style="text-rendering: inherit;padding: 0 0 0 1em;border-left: 1px solid #bbb;white-space: normal;margin: 0 0 0 0.5em;line-height: inherit;">
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Do I need to add some glue to the CMake file so that it will warn if the private headerfiles are not available? Apparently no changes were required to find them.</p>
</blockquote>
</blockquote>
</blockquote></pre>
</td>
</tr>
</table>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">
<li>CMakeLists.txt <span style="color: grey">(6ea1cba)</span></li>
<li>src/CMakeLists.txt <span style="color: grey">(1c54eb2)</span></li>
<li>src/platformtheme/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/config-platformtheme.h.cmake <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/frameworksintegration-5.16-font.sh <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/frameworksintegration-5.16-font.upd <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdemactheme.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdemactheme.mm <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformfiledialogbase.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformfiledialogbase_p.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformfiledialoghelper.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformfiledialoghelper.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformsystemtrayicon.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformsystemtrayicon.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformtheme.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformtheme.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdeplatformtheme.json <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdirselectdialog.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kdirselectdialog_p.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kfiletreeview.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kfiletreeview_p.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kfontsettingsdata.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kfontsettingsdata.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kfontsettingsdatamac.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/kfontsettingsdatamac.mm <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/khintssettings.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/khintssettings.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/khintssettingsmac.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/khintssettingsmac.mm <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/platformtheme/main_mac.cpp <span style="color: grey">(PRE-CREATION)</span></li>
</ul>
<p><a href="https://git.reviewboard.kde.org/r/126198/diff/" style="margin-left: 3em;">View Diff</a></p>
<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">File Attachments </h1>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/11/30/650d0da7-52b3-40d1-a1f9-cb610494cf77__Screen_Shot_2015-11-30_at_15.42.31.png">purely native OS X theme</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/11/30/72e2a6aa-2a7c-465b-b404-fc1e52b6fc69__Screen_Shot_2015-11-30_at_15.43.02.png">native theme but with `-style kde`</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/11/30/309e5995-74fa-42fb-a6f3-936cedbf5246__Screen_Shot_2015-11-30_at_15.43.31.png">using the KDEPlatformTheme</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/11/30/eaa1d907-bf05-4ca2-821b-83dc062aea04__QtCreatorNativeLNX.png">on Linux, using a purely "native" theme</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/12/01/de55a91f-3500-4db8-8a3b-d252fd7ea169__Screen_Shot_2015-12-01_at_13.52.35.png">KDEPlatformTheme with the "macintosh" native theme selected</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/12/12/d5f9a983-a077-4a52-913e-5d980e62daca__kate-Cullmans-appbundle.png">kate built by Christoph Cullman as a completely standalone app bundle</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/12/12/02dbfc58-445c-48f5-88ad-33b5ab55571a__kate-MP-fullnative.png">kate/MacPorts in fully native Mac mode (but using XDG-compliant QSPs).</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/12/12/c9d1e28e-6684-4ae3-b05d-1fbc6cde39f4__kate-MP-QtCurveStyle.png">kate/MacPorts using the QtCurve style (but the native platform plugin)</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/12/12/76b1305e-0bf2-4073-a61f-4df59435a198__Kate-MP-plplug-MacStyle.png">kate/MacPorts using the KdeMacTheme plugin and the macintosh style</a></li>
<li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/12/12/ad54fdf3-a450-4d0b-8a60-8962f537ed6f__kate-MP-plplug-QtCurve.png">kate/MacPorts using the KdeMacTheme plugin and the QtCurve style</a></li>
</ul>
</td>
</tr>
</table>
</div>
</body>
</html>