Bug 246180

Summary: Double-clicking a class in the Classes tab opens the same named system file rather than the local project file.
Product: [Applications] kdevelop Reporter: Alvin <alvinbeach>
Component: generalAssignee: kdevelop-bugs-null
Status: RESOLVED FIXED    
Severity: wishlist CC: aleixpol
Priority: NOR    
Version: 4.0.0   
Target Milestone: 4.0.1   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Alvin 2010-07-29 18:44:22 UTC
Version:           4.0.0 (using KDE 4.4.4) 
OS:                Linux

Hello,

I have recently switched from KDevelop 3.5.5 to KDevelop 4.0.1(using
KDevPlatform 1.0.1) and am experiencing an issue with opening files in
a Custom Makefile project.

When I double-click on a class (in the Classes tab), the installed
version of the file (found in /usr/include) is opened rather than the
file local to the project. I only noticed this when I attempted to
save my changes and could not. From what I can tell, KDevelop4 is not
first checking if the file to be opened is located in the current
project directory. Instead, it seems to check the
system /usr/include first.

Is this specific to a Custom Makefile Project? I have scoured the
configuration of KDevelop4 and the Project's configuration and cannot
see where I can change this behaviour. Am I missing something?

My system:
openSUSE 11.3 (recently upgraded and decided to migrate my KDev3
project to KDev4).
KDE 4.4.4 release 2
KDevelop 4.0.1(using KDevPlatform 1.0.1)

Cheers,

Alvin

Reproducible: Always

Steps to Reproduce:
1. Create a project that contains a class (header and implementation file).
2. Copy/Install the header file into /usr/local
3. Open the Classes tab
4. Double-click on the class.

Actual Results:  
After step 4, the header file in /usr/local will be opened rather than the file that is local to the project.

Expected Results:  
The files local to the project should always be open...have preference.

I first submitted this to the kdevelop ML. I received the following reply:

Subject: Re: Classes tab
Date: Wednesday 28 July 2010, 21:18:24
From: Milian Wolff <mail@milianw.de>
To: kdevelop-devel@barney.cs.uni-potsdam.de
- Show quoted text -

On Wednesday 28 July 2010 14:46:36 Alvin Beach wrote:
> Hello,
>
> I have recently switched from KDevelop 3.5.5 to KDevelop 4.0.1(using
> KDevPlatform 1.0.1) and am experiencing an issue with opening files in
> a Custom Makefile project.
>
> When I double-click on a class (in the Classes tab), the installed
> version of the file (found in /usr/include) is opened rather than the
> file local to the project. I only noticed this when I attempted to
> save my changes and could not. From what I can tell, KDevelop4 is not
> first checking if the file to be opened is located in the current
> project directory. Instead, it seems to check the
> system /usr/include first.
>
> Is this specific to a Custom Makefile Project? I have scoured the
> configuration of KDevelop4 and the Project's configuration and cannot
> see where I can change this behaviour. Am I missing something?
>
> My system:
> openSUSE 11.3 (recently upgraded and decided to migrate my KDev3
> project to KDev4).
> KDE 4.4.4 release 2
> KDevelop 4.0.1(using KDevPlatform 1.0.1)

Yeah that happens from time to time and is really annoying. I think we should
try to improve the situation by preferring files in opened projects when
looking for imports in Cpp. I haven't looked at the code but it can fix
multiple cases:

1) jump to declaration/definition
2) create class with inheritance (remember those <../../../usr/include/bla.h>
includes?)
3) ...more?

I have sadly no time for that right now. Please report it on bugs.kde.org.

Thanks
--
Milian Wolff
Comment 1 Aleix Pol 2013-04-11 11:37:26 UTC
I can't reproduce that anymore, please re-open with a step by step explanation if that still happens for you.