[Qt-creator] Switch header/source with private header

Leandro T. C. Melo leandro.melo at nokia.com
Thu May 31 15:39:27 CEST 2012

On 05/31/2012 02:42 PM, ext Typz wrote:
> Hello,
> Today i've had an issue with the switch header/source feature.
> I have a project with 3 files: toto.h, toto_p.h and toto.cpp (typical 
> Qt code :-)
>   - First, looking at toto.h, select 'switch header/source', which 
> opens toto.cpp: so far, so good. 'switch header/source' again brings 
> toto.cpp, nice.
>   - Next, looking at toto_p.h, select 'switch header/source', which 
> opens toto.cpp: so far, so good.
>   - Now if i select again 'switch header/source', i go back to 
> toto_p.h... which is consistent with the last switch, but i have no 
> 'simple' way to get back to toto.h.
> So from this point, the switch header/source always bings: from toto.h 
> or toto_p.h to toto.cpp [OK], and from toto.cpp to toto_p.h...
> Looking at the code, i see where this comes from: we correctly look 
> for matching header/source, but only if we have not stored the match yet.
> After a successful lookup, we store the result (both directions) in a 
> map, to allow recalling it quickly.
> This is not very usable, but i don't know how we could fix it. One 
> idea could be the switch header/source would iterate over the three 
> files, so that it goes toto.cpp -> toto_p.h -> toto.h -> toot.cpp...?
> Or maybe it switch to the 'last' used alternative, and cycle other 
> alternatives only if i call the switch header/source again immediately 
> (with no other action/key press in between): toto.cpp -> toto.h 
> (starts with last used alternative) -> toto_p.h -> toto.h ..., while 
> switching from header to source is unaffected.


the original motivation for this was to avoid switching to wrong files 
in the case they have the same name. This is a relatively common 
situation when you have multiple projects in a session.

Therefore when searching for a file we pick the one with the nearest 
patch. But since that's not a very cheap operation we store the results 
in a cache as you noticed.

Perhaps one alternative for this would be not to store the items in 
cache when the hit is not exact, which is the case for the private 
headers file. They are provided as a somehow artificial match because of 
the popularity of this idiom.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/qt-creator/attachments/20120531/31ec76e9/attachment.html>

More information about the Qt-creator mailing list