Review Request 119594: fix FileDialog size restorage

Thomas Lübking thomas.luebking at gmail.com
Mon Aug 4 11:59:43 UTC 2014



> On Aug. 3, 2014, 11:13 nachm., Lukáš Tinkl wrote:
> > No change here, ie. it doesn't restore the file dialog geometry.
> 
> Thomas Lübking wrote:
>     what is your precise testcase?
>     a bit remote because of your other patches: did you check that the correct platformtheme lib is used? (ran into this in a custom installation. self compiled plugin ended up in a different path than the distro qt5 plugin path)
>     is the size data updated in kdeglobals?
> 
> Lukáš Tinkl wrote:
>     Testcase: opening a filedialog in any Qt/KDE app, restarting the app -> default file/window size
>     
>     I guess I'm using the correct platformtheme, otherwise I wouldn't be seeing KDE fialogs right? Also, toplevel windows are not restored either
>     
>     Yup, the size is always correctly saved to the config files
> 
> Martin Klapetek wrote:
>     I can also confirm that file dialogs do not have their size restored with this patch (using tests/qfiledialogtest and also real dialogs around the workspace), however testing the dir selection does give me properly restored size dialog (./qfiledialogtest --staticFunction getExistingDirectory --modal on). Qt 5.3.1 here.
> 
> Lukáš Tinkl wrote:
>     Because KDirSelectDialog doesn't use KWindowConfig:
>     
>     
>     void KDirSelectDialog::Private::readConfig(const KSharedConfig::Ptr &config, const QString &group)                               
>     {                                                                                                                                
>         m_urlCombo->clear();                                                                                                         
>                                                                                                                                      
>         KConfigGroup conf(config, group);                                                                                            
>         m_urlCombo->setHistoryItems(conf.readPathEntry("History Items", QStringList()));                                             
>                                                                                                                                      
>         const QSize size = conf.readEntry("DirSelectDialog Size", QSize());                                                          
>         if (size.isValid()) {                                                                                                        
>             m_parent->resize(size);                                                                                                  
>         }                                                                                                                            
>     }
> 
> Martin Klapetek wrote:
>     Yup, didn't know that. Disabling this^ code breaks the resizing in dir selection too.

There're actually more issues - nevertheless both steps are (theoretically) required.
Creating the platform window *should* apply the widget size - I suspect a QWidget QPA bug here.

Creating the window handle, then restoring the window handle and then explicitly copying the QWindow size should work, though.


- Thomas


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/119594/#review63726
-----------------------------------------------------------


On Aug. 4, 2014, 11:57 vorm., Thomas Lübking wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/119594/
> -----------------------------------------------------------
> 
> (Updated Aug. 4, 2014, 11:57 vorm.)
> 
> 
> Review request for KDE Frameworks, kdelibs, Aleix Pol Gonzalez, Lukáš Tinkl, and Martin Klapetek.
> 
> 
> Repository: frameworkintegration
> 
> 
> Description
> -------
> 
> - saving in the deconstrutor is insufficient,
>   the dialog might survive the runtime
>   -> needs to be saved when the dialog is finished or just closed
>   (the closeEvent is not invoked if at least a sync dialog is finished)
> 
> - ensure a windowHandle and then restore the window size before calling ::exec()
>     
> - workaround an apparent QWidget QPA bug where even for a created platform window
>   the QWindow geometry is not applied on the QWidget
> 
> 
> Diffs
> -----
> 
>   src/platformtheme/kdeplatformfiledialogbase.cpp b823bc7 
>   src/platformtheme/kdeplatformfiledialogbase_p.h 8ef5b1e 
>   src/platformtheme/kdeplatformfiledialoghelper.h 406a4f1 
>   src/platformtheme/kdeplatformfiledialoghelper.cpp 520b6f5 
> 
> Diff: https://git.reviewboard.kde.org/r/119594/diff/
> 
> 
> Testing
> -------
> 
> See
> https://git.reviewboard.kde.org/r/119512/
> 
> 
> Thanks,
> 
> Thomas Lübking
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20140804/07c571a9/attachment.html>


More information about the Kde-frameworks-devel mailing list