Author Topic: how to view inheritance hierachy in C++?  (Read 10920 times)

chrisant

  • Senior Community Member
  • Posts: 1410
  • Hero Points: 131
Re: how to view inheritance hierachy in C++?
« Reply #15 on: August 01, 2009, 06:23:12 am »
Re: issue #2 -- The Repro.zip reproduces the problem it describes 100% consistently for me using a brand new install of SE14.0.2.2 with no hotfixes, using a brand new config directory.  Before/after screenshots and Repro.zip file attached below.

Will look into self contained repro for issue #1 this weekend.

ScottW, VP of Dev

  • Senior Community Member
  • Posts: 1471
  • Hero Points: 64
Re: how to view inheritance hierachy in C++?
« Reply #16 on: August 03, 2009, 02:29:18 pm »
Thanks for the most excellent sample workspace to reproduce this. We're definitely having a drawing problem in the tree, where the class name is getting smooshed into the symbol name. Fiddling with the repro.cpp file, I was able to get a case where it only showed the class name until I expanded a node in the tree and reselected the top node. 

As for the calls/uses information, though, it looks correct to us. The HelloWorld() function uses m_x and printf. The Foo class is listed because the selected symbol is a member of that class. If I take all of the lines out of the HelloWorld function, my Uses/Calling Tree shows just Foo in it, so I think the class will be listed for any member.

We'll definitely fix the drawing problem. Let us know if you think any of the listed information is incorrect and why and I'll see what we can do.  Thanks!

Dan

  • SlickEdit Team Member
  • Senior Community Member
  • *
  • Posts: 2220
  • Hero Points: 118
Re: how to view inheritance hierachy in C++?
« Reply #17 on: August 03, 2009, 05:38:26 pm »
I tracked down the problem specified in #2.  It turns out this is not a draw bug with the tree but a problem with the math when the columns are calculated.  It is in the C code so we will have to fix it for SlickEdit 15.0.0 - it has been logged as defect 10932.

chrisant

  • Senior Community Member
  • Posts: 1410
  • Hero Points: 131
Re: how to view inheritance hierachy in C++?
« Reply #18 on: August 15, 2009, 08:05:05 am »
Update re: issue #1 -- where opening a different project does not refresh the Symbol toolbar.

I have not yet found 100% consistent steps using a fresh config, so I started debugging it directly.  So far I've discovered when the symptom occurs the calling sequence is this:  creating the form sets up the correct tag files/etc, but soon after _tbRestoreState__tbcbrowser_form gets called and deletes everything in the treeview and replaces it with whatever used to be there.  So the treeview gets initialized correctly, but then gets reset back to a previous-and-no-longer-correct state.

Steps I'm following:
0.  Make sure Symbol toolbar is Floating, and dismissed.
1.  Launch SE, autorestores previous project.
2.  Right click on a symbol in a file window, choose "Show {symbol} in Symbol Browser".
3.  Dismiss the Symbol toolbar.
4.  Open a different project.
5.  Right click on a symbol in a file window, choose "Show {symbol} in Symbol Browser".
Result = Symbol toolbar comes up with the previous project's vtg shown, the symbol from step 2 is still shown.
Expected = Symbol toolbar comes up with the vtg from project from step 3 shown, and symbol from step 4 is shown.

I inserted some trace output in cbrowser.e:
  • say("refresh"); in refresh_tagfiles
  • say("save state"); in _tbSaveState__tbcbrowser_form
  • say("restore state"); in _tbRestoreState__tbcbrowser_form

Sure enough:
  • The "save state" gets logged when dismissing the Symbol toolbar in step 3.
  • The "refresh" gets logged when showing the symbol in step 5, and immediately afterward the "restore state" gets logged.

While I'm not sure yet why it's happening, and why it doesn't repro consistently in a fresh config, it is some kind of problem with the order of the initialization of the treeview and restoring the toolbar's state.  Maybe this will help the SlickTeam realize what's happening.  In the meantime, I'll continue to work on nailing down a consistent repro.

chrisant

  • Senior Community Member
  • Posts: 1410
  • Hero Points: 131
Re: how to view inheritance hierachy in C++?
« Reply #19 on: August 15, 2009, 06:07:39 pm »
I found a 100% consistent repro using a stock install and fresh config.
See previous post for details about the say lines and the trace output.

One-Time Setup:
1.  Launch SE.
2.  Set the Symbol toolbar to be Floating.
3.  Dismiss the Symbol toolbar.
4.  Recompile the cbrowser.e macro (I added three say lines as mentioned in my previous post).
5.  Close SE.
Repeatable Repro Steps:
6.  Launch SE, autorestores previous project.
7.  Right click on a symbol in a file window, choose "Show {symbol} in Symbol Browser".
8.  Dismiss the Symbol toolbar.
9.  Open a different project.
10.  Right click on a symbol in a file window, choose "Show {symbol} in Symbol Browser".
RESULT = Symbol toolbar comes up with the previous project's vtg shown, the symbol from step 7 is still shown.
EXPECTED = Symbol toolbar comes up with the vtg from project from step 9 shown, and symbol from step 10 is shown.

Step #4 is required for me to be able to reproduce this in a stock install with a fresh config.  No functional changes are made to cbrowser.e, but the action of compiling and loading it does something that causes the problem to start occurring.