History log of /haiku/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
Revision Date Author Comments
# 00c45752 28-Sep-2022 Augustin Cavalier <waddlesplash@gmail.com>

Debugger: Use StringWidth()+DefaultLabelSpacing() to determine column widths.

Much less cut off text in the default layout.


# 1f34a738 30-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Debugger: Use monospace font in tables that display addresses.

This makes stack traces, registers, variables, etc. so much nicer
and easier to read and work with. Ahh, much better.


# e2ab1a8e 01-Aug-2018 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

Unused and should be removed, fixes last commit


# 61e207f6 01-Aug-2018 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

Unused

Approved by DeadYak to remove


# 9832d1f8 01-Aug-2018 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

Use strict typing


# 77007502 18-Jan-2018 Rene Gollent <rene@gollent.com>

Debugger: Rework type handlers to allow for custom selection.

TypeHandler:
- Add name field for presentation purposes. Adapt subclasses accordingly.

TypeHandlerRoster:
- Add methods to count and retrieve all type handlers for a given type,
and adjust CreateValueNode to allow for passing in an explicit handler.
Adjust callers accordingly.

VariablesViewState:
- Add helpers to store an explicitly chosen type handler for a node.

TypeHandlerMenuItem:
- ActionMenuItem subclass that takes care of reference management
for its contained type handler.

VariablesView:
- Add context menu for choosing type handlers if applicable. Implement
support for invoking said type handlers in a similar manner to explicit
typecasts.
- Adjust saving/restoring the view state so that hidden nodes are taken
into account as well. This is necessary since it may be the case that
the handler had to be applied to the hidden child rather than the visible
node (i.e. the BMessage handler when applied to a pointer to a BMessage).

All together, these changes allow choosing to switch between views of a type
when the Debugger has multiple handlers for it. For example, for BMessages
this allows switching between displaying the raw underlying structure vs
the decoded message content.


# 3995592c 10-Jan-2018 Rene Gollent <rene@gollent.com>

Debugger: Fix #13939, more work on #13800.

- Fix various cases where OpenHashTables weren't being cleared properly.
- Fix various reference counting errors.
- Simplify FileManager reference handling.
- Fix bug in LocatableDirectory where the directory named '/' would have its
name returned as empty. This would lead to failed lookups for entries already
in the table, and ultimately corrupted the hash table when deleting unused
entries, leading to #13939. This was previously never noticed due to the
entries not being freed properly.
- AbbreviationTable wasn't clearing its entries.


# 10ba3348 30-Nov-2016 Rene Gollent <rene@gollent.com>

Debugger: Cleanup.

- Split MessageCodes.h into a second file that separates out the
application-specific message codes from those used by the core.
Adjust includes accordingly. No functional change.


# fce4895d 29-May-2016 Rene Gollent <rene@gollent.com>

Debugger: Split into core library and application.

- Add subfolder src/kits/debugger which contains the debugger's core
functionality and lower layers. Correspondingly add headers/private/debugger
for shared headers to be used by clients such as the Debugger application
and eventual remote_debug_server. Adjust various files to account for
differences as a result of the split and moves.
- Add libdebugger.so to minimal Jamfile.


# 081d56c4 09-Nov-2015 Rene Gollent <rene@gollent.com>

Debugger: Fix potential VariablesView crash.
- In some contexts, VariablesView doesn't have an associated thread
and stack frame, which would lead to a potential crash when resolving
expression nodes.


# be32382a 10-Nov-2015 Rene Gollent <rene@gollent.com>

Debugger: Adjust initial configuration of VariablesView.
- VariablesView is now passed a ValueNodeManager to use at
construction time, rather than creating one itself internally.
- Adjust TeamWindow accordingly.


# 90da71b6 02-Aug-2015 Rene Gollent <rene@gollent.com>

VariablesView: Style cleanups.


# 3bb17aa9 24-Jul-2015 Rene Gollent <rene@gollent.com>

Debugger: Minor refactoring.

VariablesView:
- Factor out setting up a variable edit request into a helper function.
Adjust table node invocation accordingly.
- Add Edit variable context menu item if appropriate.


# d88d941c 23-Jul-2015 Rene Gollent <rene@gollent.com>

Debugger: Finish variable edit support.

VariablesView:
- Intercept table node invocations. If the invocation corresponds to
a writable variable, request a corresponding editor and bring up a
an edit window for it.
- Handle requests from the edit window to write the final updated value
of the variable.

This implements the last missing piece for ticket #9708, except for an
editor for floats.


# 6edcd0bf 17-Jul-2015 Rene Gollent <rene@gollent.com>

Debugger: Build fix.


# 5b026a29 13-Jun-2015 Rene Gollent <rene@gollent.com>

Debugger: Improve variable tooltips.

VariablesView:
- Tooltips now indicate if there was a problem resolving either the location
or the actual value of a given variable, as well as whether or not the
variable is editable in its current location.


# 299f564e 26-Jun-2015 Rene Gollent <rene@gollent.com>

Debugger: Fix potential crash in VariablesView.

VariableTableModel:
- When attempting to retrieve the type for a given node, ensure
that it actually has a value node first. This might not necessarily
be the case if no appropriate type handler was found.


# d2a6418f 07-Jun-2015 Rene Gollent <rene@gollent.com>

Debugger: Cleanups, no functional change.

- Remove out-of-place accessor to type lookup info on ValueLoader.
Instead, adjust CreateChildren() and CreateChildrenInRange() to take a
TeamTypeInformation parameter. This can then be used by value nodes that
need to be able to look up type information in order to properly
publish their children, such as BList and BMessage. Refactor subclasses
and callers accordingly


# c3f9f555 16-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Minor visual tweak in VariablesView.

- Expression evaluation results are now highlighted as changed when
they're first added, since they're immediately of interest, unlike
uninitialized variables that're first coming into scope.


# 9dcef048 15-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanups.

Get rid of ExpressionEvaluationWindow.

- When asking to evaluate an expression via the Tools menu, we now
bring up a prompt window the same as the one used to add a watch
expression. This in turn works exactly the same as the latter,
except an additional flag is sent indicating that the expression
in question should not be persisted. As such, the results are
shown in the variables view, with all the capabilities that allows,
but also without the expression following the function as a watch
expression would.


# 40d79c05 12-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix type value display in VariablesView.

- When retrieving the type to display for a given model node, ask its
underlying value node for its corresponding type rather than relying
on the one initially stored in the model, as the latter can change
as a result of typecasts.


# db1df758 09-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanups.

SourceLanguage and friends:
- Remove ParseTypeExpression from SourceLanguage, as its functionality
can now properly be subsumed by the general expression parser, and
simply becomes another result type thereof.

CLanguageFamily/CLanguage/CppLanguage:
- Remove IsModifierValid() hook, as this is all now handled internally
in the expression parser.

VariablesView:
- Refactor to handle typecast requests via expression evaluation. Since
this is done asynchronously, rework the logic to handle recognizing
expression evaluation results that correspond to a requested cast,
and handle accordingly.


# 6136e430 23-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanups.

VariablesView:
- Remove unused member variable.
- Add optional presentation name field to ModelNode, which allows
overriding the name of its underlying ValueNode for display purposes.
Used to ensure that a top-level node for an expression always shows
the expression string itself, even when the returned result is a value
node with a different name.


# 06901787 22-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Further improvements to expression handling.

VariablesView:
- ModelNode now acquires a reference to its target variable. This
is necessary because in the case of expression variables, the
model node is ultimately the only one aware of it, and therefore
needs to manage its lifetime.
- AddSyntheticNode() now discriminates between the case where it
needs to create a node child on behalf of the caller versus when
it's given an already created one, as is the case when an expression
resolves to a value node. Consequently it also detects whether
it needs to request value resolution or not, and handles accordingly.
- _AddExpressionNode() now supports value node results and handles
them accordingly.


# b4a86113 21-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Adjust VariablesView for new expression API.

- Simplify handling of expression nodes. For primitive results, we now
construct a Variable object that represents the expression result, and
then add that as we would any other local variable. This simplifies handling,
and also allows saving/restoration of their view state to be handled the
same as other nodes. Complex expression results aren't yet handled properly,
pending some further work in progress on the evaluator.


# 81c848a1 14-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Rework expression parsing API.

ExpressionInfo:
- No longer stores an explicit result type (this is inferred from
evaluation of the expression itself now).
- Introduce class ExpressionResult for returning the result of an
expression computation. This can currently take the form of either
a primitive value, or a value node object.
- Adjust UserInterfaceListener and ExpressionInfo::Listener to take
the above changes into account, and correspondingly adjust all
callers/listeners.

CLanguageExpressionEvaluator:
- Introduce child class Operand. This subsumes the functionality that
was previously in the separate Number class, and can represent a
primitive value, a value node or a type. Also has functionality to
implicity handle type promotion/inferring when performing calculations
between operands.
- Adjust expression parser to operate in terms of Operands rather than
Numbers. This allows a number of improvements, most notably that an
expression can now return a value node as a result rather than only
a primitive number. This capability isn't yet fully used, but paves
the way for future uses such as an expression that evaluates to a data
member, a global variable, or an arbitrary pointer of a particular type.
- Various cleanups/simplifications that were possible as a result of the above
changes.

ExpressionEvaluationWindow/ExpressionPromptWindow:
- Remove type menu field, since the expression API no longer uses it.

Adding/removing expressions in the VariablesView is temporarily disabled,
pending some further rework there to properly handle the new result object.


# 46593adf 14-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix #11459.

- When saving our view state, only save a new set of values if a stack
frame clear is pending. Otherwise, check if there is a previously
existing view state, and take over its values. This ensures that we
correctly remember our previous values when the user is simply switching
stack frames while in a stopped state.


# 743d5dbe 09-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix potential crash.

VariablesView:
- Check to ensure the stack frame actually does have a function
object associated with it before attempting to use it, as this
isn't always the case.


# d1c9ffed 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanup.

Team:
- Remove expression evaluation event / listener hook. This doesn't
really belong to the Team anyways.

UserInterfaceListener:
- ExpressionEvaluationRequested() now takes an ExpressionInfo object
rather than the individual subcomponents.

ExpressionEvaluationJob:
- Notification of expression evaluation completion is now handled
via the info object's listener interface rather than the Team.

Others:
- Adjust all users of expressions to set themselves up as
ExpressionInfo::Listener subclasses, and consequently add themselves
to the respective info object when requesting evaluation. This
significantly simplifies various things, and also ensures that no
one accidentally gets notified of an expression they didn't actually
ask for, which could occur with the previous Team-based listener
interface. Make all other required adjustments for new interface
usage.

No functional change intended.


# e646545b 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Save/restore expression node values.

- This allows expression results to be highlighted for value changes
as we already do for regular variable values.


# b7e72db3 02-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Implement first part of #11387.

VariablesView:
- The view now keeps a mapping of a list of expressions associated
with functions.
- Add actions for adding/removing expressions to variables context menu.
- When setting up to show a new stack frame, also add corresponding expression
nodes and request their evaluation.
- Extend VariablesView::Listener interface to also encompass expression
evaluation requests.
- Don't add context actions for expression nodes.

TeamWindow:
- Implement VariablesView::Listener expression evaluation hook and forward
responses along.


# 2a6c54fb 02-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Slight tweak to changed value highlighting.

VariablesView::ModelNode:
- Only check if a variable's value has changed if we actually have a
valid previous value to compare against. Otherwise, e.g. variables
that just came into scope but haven't yet been initialized would
show up as changed, while their value is, at that point completely
uninteresting.


# b6c4fc96 01-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Implement #9946.

TableCellValueRenderer{Utils}:
- The rendering calls now take a boolean indicating if the value
being rendered differs from its previous state. This is taken
into account by rendering it in a different color to indicate
the change. Adjust all implementing subclasses accordingly.

VariablesView::ModelNode:
- Now stores the previous value of the corresponding value node,
and can be queried if its value has changed. Used by renderers.

VariablesView::_{Add,Apply}ViewStateDescendentInfos():
- When walking the model, also store/restore the values of nodes in the
history.

In summation of all the above changes, when stepping through a function,
we now display values that have changed since the last step, or that have
appeared for the first time in a different color.


# 473a74f7 28-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Debugger: Add support for copying variable values.

- Implements a simple copy option in the variables context menu that
allows one to copy the displayed value to the clipboard.


# e10e7044 25-Apr-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix crash in context menu builder.

A value node might not have a location due to e.g. issues resolving its parent.
Guard against this case and simply return early as we won't be able to take any
meaningful actions on such a node. Fixes the second crash listed in #10781.


# 1ea8fd52 14-Sep-2013 Rene Gollent <anevilyak@gmail.com>

Debugger: Add missing std::nothrow.


# 20c5fc4a 14-Sep-2013 Rene Gollent <anevilyak@gmail.com>

Debugger: Add missing std::nothrow.


# a7376ac1 30-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Fix remaining flickering for #9841.

- Revert hrev45802. However, implement the same essential logic in
the TeamWindow itself, and have it guard the StackTraceView,
VariablesView, and step control buttons. This fixes flickering
in between short steps since it prevents the intermediate clear
from happening unnecessarily.
- Implement appropriate guards for the interim wait state.


# c2d6b9fa 30-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Reduce flickering in VariablesView.

Since the individual _AddNode() invocations notify their node additions,
NotifyTableModelReset() isn't really appropriate here after all, since
the net effect will be seeing all the nodes getting added, then removed
again, then re-added. Also fixes the fact that the variables wouldn't get
cleared when picking Run, until we stopped again.


# 325f7bb4 21-May-2013 Rene Gollent <anevilyak@gmail.com>

Show correct type in case a typecast has taken place.


# e312ed26 19-May-2013 Rene Gollent <anevilyak@gmail.com>

Add "Cast to array" context option.

Implements a simple context shortcut allowing to cast a pointer variable
directly to a 10-element array of the type it points to. Resolves #9778.


# f297d659 20-May-2013 Rene Gollent <anevilyak@gmail.com>

Relax range setting constraints for arrays.

- VariablesView now detects if a container's range is fixed or not,
and uses that to adjust both the prompt it displays and whether or not
the parsed ranges are bounds checked.
- ArrayValueNode now returns the currently user-set range rather than
the dimension constraints, since those might not always be accurate.


# d51ab41d 17-May-2013 Rene Gollent <anevilyak@gmail.com>

Fix oversight in set visible range support.

Detect the case where we have a pointer to an array type, as seen
when typecasting a pointer to an array, and present the set visible
range option for these as well.


# c05a041e 17-May-2013 Rene Gollent <anevilyak@gmail.com>

Add Type column to VariablesView. Resolves #9779.


# 5d8c967f 15-May-2013 Rene Gollent <anevilyak@gmail.com>

VariablesView: Switch back to NotifyNodesRemoved().


# ad615809 15-May-2013 Rene Gollent <anevilyak@gmail.com>

VariablesView: Use Notify{NodesCleared,TableModelReset}().


# 9187efd1 04-May-2013 Rene Gollent <anevilyak@gmail.com>

Clean up context menu building.

Even if the inspect action is unavailable, continue building the rest
of the actions, since they can apply regardless of the value location.


# 6a2d6f50 27-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix a case where values wouldn't be requested properly.

- If a node was already expanded, and we then removed/replaced
its children, those wouldn't automatically get their value nodes
added. Consequently, value retrieval for them would fail until
the parent was collapsed/re-expanded. If we encounter such a
model node when receiving a value request, notify the table model so
it can construct the value node appropriately.


# 7198436c 27-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix several crash problems in Debugger.

- When removing a value node in response to ValueNodeChildrenDeleted,
we need to recurse down and ensure that each node's children are
likewise notified/removed. Otherwise we end up with deleted child
nodes in the node table, which in turn led to potential crashes when
either adjusting a node's type and/or its visible array range.


# 920576bb 21-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Implement setting visible ranges on containers.

- Objects that act as ranged containers now expose a menu option
which allows the user to input a comma-separated list of ranges to
show. These need not be contiguous, ergo one can show only
the first and last elements of an array, or some random set of
indices in the middle as well.


# b11fd75b 27-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix broken ValueNodeChildrenDeleted() behavior.

- Due to the way the item list was being iterated,
ValueNodeChildrenDeleted() would only actually remove every
other child.


# aa366c07 25-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Add an information blurb option to PromptWindow.

- PromptWindow now takes a parameter which contains optional
informational text to display above the text control.

- Adjust callers.


# bbaaaf2e 24-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Improve VariableView's tooltip handling.

- Make GetToolTipInfo() sensitive to the column being hovered over.
If hovering over the variable name, we display its value location
information as before. However, if hovering over the value column,
the tooltip now displays the full value of the variable, if
available.


# 1b74b08f 16-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Save/restore renderer settings in view state.


# 41cec3e6 15-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Remember any applied typecasts in VariableViewState.

Preserves and restores typecasts across steps like we already do
for node expansion states.


# 57245d2b 14-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Slight cosmetic adjustment.

If the current node is an address type and has as its only child an array type,
use the same approach we do for pointers to objects and hide the intermediate
dereference.


# f21f5c7c 13-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix build.


# 692d2db5 13-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Notify user if the we fail to parse the type.


# a4df762f 16-Dec-2012 Rene Gollent <anevilyak@gmail.com>

Fix #9294.

- Fix incorrect order of operations in ValueNodeManager.
- Upon receiving a changed notification, VariableTableModel needs to
make tree table aware that the previous nodes have been removed.


# 2c32e743 08-Dec-2012 Rene Gollent <anevilyak@gmail.com>

64-bit fixes.


# 13c04a36 08-Dec-2012 Rene Gollent <anevilyak@gmail.com>

Adapt VariablesView to use the ValueNodeManager.


# ea788ed9 30-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Correction to previous leak fix.

- The actual reason the hidden node wasn't being released as expected
was that ContainerListener::ModelNodeHidden() added a reference on
behalf of its indirect target, while the latter never actually
took ownership of said reference.


# f4621a90 30-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Don't leak the hidden child if present.


# 6be1e373 30-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Fix typecasting in address->compound node case.

- In the special case of an address node with a hidden child, we
must send notifications for removal of the hidden compound's
children rather than for the hidden node itself. Otherwise the
base TreeTable's state gets out of sync, leading to a crash when
attempting to typecast such a node.


# 2a2e3baf 06-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Add UI hooks for watchpoints.

This gets basic watchpoint support working. Right clicking on a variable
and picking Watch now opens a prompt with the inferred address, size
and watch type for the user to adjust.

Still needs some work to get them to show/be modifiable in the breakpoints
tab and to get them to respect architectural restrictions (i.e. on x86 we
can realistically only do 2 hardware watchpoints and those are restricted
to write watch), at least until we support software emulated watchpoints.


# 9b64b5d2 06-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Add TODO note.


# 7b74c566 05-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Cleanup: move expression parsing for types to SourceLanguage.


# 9e7a46be 05-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Extend typecasting to support pointer/address types.

We now parse the user's input to see if it should be a pointer/reference
type and create a derived type accordingly. This allows casting to e.g.
StyledEditApp*.


# 8a4cdf3e 04-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Fix handling of notifications. Basic typecasting now works.

Still needs a bit of work to properly grok pointer/reference types.


# ba4dad8b 04-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Fix child-creation-needs-value nodes.

We only want to do a delete/create cycle if the node actually changed. Fixes
BMessageValueNode.


# e8cdcede 04-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Start adding support for typecast support.

Not yet complete/working.


# f4b1ddb5 23-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Coding style: normalize naming, some whitespace fixes

* TeamUISettings[Factory] -> TeamUiSettings[Factory]
* GUITeamUISettings -> GuiTeamUiSettings
* GUISettingsUtils -> GuiSettingsUtils


# 3a577974 18-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Handle compound node values in variables view.

- If the node we're looking at is a compound node, retrieve its location
and show that as the value with an indicator to clarify that it's an object.

- Minor tweaks to tooltip format.
- Style cleanups.


# 666222d3 17-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Resolve register names, print memory piece size information.


# 2216ccb7 17-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Implement support for tooltips in VariableView. Implements #8286.

- These show the memory or register location(s) of the variable over which
the mouse is hovering.


# 17ef26a9 15-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Add inspection context menu action.

- TableCellContextMenuTracker now supports menus that don't have a settings
submenu, since some variables won't have renderer settings but will still
have context actions.

- Add _GetContextActionsForNode() to retrieve the list of contextual actions
available for a given model node. Currently this is only adds an action
to inspect the memory address of the highlighted value, but will be extended
for other actions later.


# 0712121c 15-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Add support for actions to TableCellContextMenuTracker.

- VariablesView's context menu tracker now optionally accepts contextual
actions to add to the menu in addition to the current renderer settings.


# 11102e38 19-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Reworked GUI settings storage.

- Simplified things so each window simply records all its settings into
a BMessage, which is what ultimately goes into the actual UI settings.

- Added settings storage/retrieval to the various sub views of the
team window. This means that the column widths/positioning on all
views hosting a column list view are now also preserved and restored.


# 781a7c36 23-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Relocate incorrectly placed call, and guard it as needed.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42471 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 657d2740 23-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Fix indentation.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42470 a95241bf-73f2-0310-859d-f6bbb57e9c96


# efc5edfa 23-Jul-2011 Rene Gollent <anevilyak@gmail.com>

* Rename and make VariableTableModel::_GetTreePath() public so VariablesView
can make use of it, and adjust existing callers.
* For nodes that need child creation to be deferred until after value
resolution succeeds, send a request to the view to restore their view state
once child creation is complete. This gets the view state working again
for things like BPoints and other complex structures embedded in a BMessage.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42469 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 55715512 19-Jul-2011 Rene Gollent <anevilyak@gmail.com>

For value nodes with deferred child creation, value loading needs to be
requested once the deferred load has been complete, otherwise their values
would never be loaded if their parent node was already expanded while stepping
through the debugger. There still remains an issue with saving/restoring view
state for such nodes though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42457 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 977db2b5 04-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Add clarifying comment.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42375 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aa069e23 03-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Add a listener hook to notify the parent when model nodes are marked hidden.
This allows the variables view to request value/location resolution for those
nodes as needed, since it's otherwise unaware of their existence. This is
necessary in order to correctly handle nodes which require resolution to
happen in order to publish their children, since their value would otherwise
never be requested when they're hidden by virtue of being the child of an
address node.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42369 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 002d5e97 03-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Only mark a compound child hidden if it is in fact the only child present.
Interesting side effects otherwise occur in the case where multiple compound
children are present, since other areas of the table model depend on the node
only being hidden in the single child case.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abacf1bd 27-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Extend ValueNode to be able to indicate that a node needs child creation
requests delayed until its location/value have been resolved. Update
VariablesView to make use of that flag.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42333 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5d70f1ae 19-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Get the variable view state more or less usable again. Still needs some more work to
do things like preserve renderer settings and some other details.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42254 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c3e066cf 16-Dec-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced uses of obsolescent BReference[able] API.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39869 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be12bce7 06-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed GCC2 build, and a warning that should have fired in GCC4 as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 59ea286f 05-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* EnumerationValue -> EnumeratorValue
* Since some types don't have names (e.g. pointer types or anonymous structs or
unions), each type does now also have a unique ID. The global type cache
registers types by ID and by name (if they have one). This fixes clashes of
types with empty names.
* Completely refactored the code dealing with variable values. Formerly we had
Variable and TypeComponentPath to navigate to a component, mapped to a
BVariant representing the value. Now we have:
* Interface Value with various subclasses (BoolValue, IntegerValue, etc.) to
represent a value, with the flexibility for more esoteric values.
* A tree of ValueNode+ValueNodeChild objects to represent the components of a
variable. On top of each ValueNodeChild sits a ValueNode representing the
value of the component, potentially having ValueNodeChild children. This
should allow casting a component value, simply by replacing its ValueNode.
* Interface ValueHandler and various implementations for the different value
types. It is basically a factory for classes allowing to format/display a
value.
* ValueHandlerRoster -- a registry for ValueHandlers, finding the best one
for a given value.
* Interface TypeHandler and various implementions for the different type
kinds (primitive, compound, address, etc.). It is basically a factory for
ValueNodes for that type.
* TypeHandlerRoster -- a registry for TypeHandlers, finding the best one
for a given type.

That's still a bit work in progress. It introduces at least one regression:
The VariablesView doesn't save/restore its state anymore. Will take a while
until that is added back.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33907 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e3a631c0 15-Oct-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Introduced interface UserInterface, which abstracts the user interface code.
* Added implementation GraphicalUserInterface for the current GUI.

TeamDebugger does no longer know about TeamWindow.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33594 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3bb17aa98a0eecf5aafa6a664fbcd18c3cb5cb31 24-Jul-2015 Rene Gollent <rene@gollent.com>

Debugger: Minor refactoring.

VariablesView:
- Factor out setting up a variable edit request into a helper function.
Adjust table node invocation accordingly.
- Add Edit variable context menu item if appropriate.


# d88d941c90bb26795b81a9bb676abeb1e628df8d 23-Jul-2015 Rene Gollent <rene@gollent.com>

Debugger: Finish variable edit support.

VariablesView:
- Intercept table node invocations. If the invocation corresponds to
a writable variable, request a corresponding editor and bring up a
an edit window for it.
- Handle requests from the edit window to write the final updated value
of the variable.

This implements the last missing piece for ticket #9708, except for an
editor for floats.


# 6edcd0bf79b8f4fc20158d8345bae7b5d6917940 17-Jul-2015 Rene Gollent <rene@gollent.com>

Debugger: Build fix.


# 5b026a2960484d7c862ed8e9142d57b8f71fb797 13-Jun-2015 Rene Gollent <rene@gollent.com>

Debugger: Improve variable tooltips.

VariablesView:
- Tooltips now indicate if there was a problem resolving either the location
or the actual value of a given variable, as well as whether or not the
variable is editable in its current location.


# 299f564e06bc45615f167d81e8a95d5057b444ee 26-Jun-2015 Rene Gollent <rene@gollent.com>

Debugger: Fix potential crash in VariablesView.

VariableTableModel:
- When attempting to retrieve the type for a given node, ensure
that it actually has a value node first. This might not necessarily
be the case if no appropriate type handler was found.


# d2a6418f63f04178dd2ffe332d169ec8b7593087 07-Jun-2015 Rene Gollent <rene@gollent.com>

Debugger: Cleanups, no functional change.

- Remove out-of-place accessor to type lookup info on ValueLoader.
Instead, adjust CreateChildren() and CreateChildrenInRange() to take a
TeamTypeInformation parameter. This can then be used by value nodes that
need to be able to look up type information in order to properly
publish their children, such as BList and BMessage. Refactor subclasses
and callers accordingly


# c3f9f5550d2e175e7515c7a2ef1ec44166739ca2 16-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Minor visual tweak in VariablesView.

- Expression evaluation results are now highlighted as changed when
they're first added, since they're immediately of interest, unlike
uninitialized variables that're first coming into scope.


# 9dcef0489e544e13fc8ce4b92923ebe48b66f861 15-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanups.

Get rid of ExpressionEvaluationWindow.

- When asking to evaluate an expression via the Tools menu, we now
bring up a prompt window the same as the one used to add a watch
expression. This in turn works exactly the same as the latter,
except an additional flag is sent indicating that the expression
in question should not be persisted. As such, the results are
shown in the variables view, with all the capabilities that allows,
but also without the expression following the function as a watch
expression would.


# 40d79c05877ca364e0d38d74ede4a9025c6aff7c 12-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix type value display in VariablesView.

- When retrieving the type to display for a given model node, ask its
underlying value node for its corresponding type rather than relying
on the one initially stored in the model, as the latter can change
as a result of typecasts.


# db1df758b834822fd9006acf6860fd666380014c 09-Dec-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanups.

SourceLanguage and friends:
- Remove ParseTypeExpression from SourceLanguage, as its functionality
can now properly be subsumed by the general expression parser, and
simply becomes another result type thereof.

CLanguageFamily/CLanguage/CppLanguage:
- Remove IsModifierValid() hook, as this is all now handled internally
in the expression parser.

VariablesView:
- Refactor to handle typecast requests via expression evaluation. Since
this is done asynchronously, rework the logic to handle recognizing
expression evaluation results that correspond to a requested cast,
and handle accordingly.


# 6136e4303c7a3c29491b812eca93ac9e0980e6bf 23-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanups.

VariablesView:
- Remove unused member variable.
- Add optional presentation name field to ModelNode, which allows
overriding the name of its underlying ValueNode for display purposes.
Used to ensure that a top-level node for an expression always shows
the expression string itself, even when the returned result is a value
node with a different name.


# 0690178786125729bcfc3d986f330bf6998870f8 22-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Further improvements to expression handling.

VariablesView:
- ModelNode now acquires a reference to its target variable. This
is necessary because in the case of expression variables, the
model node is ultimately the only one aware of it, and therefore
needs to manage its lifetime.
- AddSyntheticNode() now discriminates between the case where it
needs to create a node child on behalf of the caller versus when
it's given an already created one, as is the case when an expression
resolves to a value node. Consequently it also detects whether
it needs to request value resolution or not, and handles accordingly.
- _AddExpressionNode() now supports value node results and handles
them accordingly.


# b4a861136b9249eefc78a47528e5f4e515c633c6 21-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Adjust VariablesView for new expression API.

- Simplify handling of expression nodes. For primitive results, we now
construct a Variable object that represents the expression result, and
then add that as we would any other local variable. This simplifies handling,
and also allows saving/restoration of their view state to be handled the
same as other nodes. Complex expression results aren't yet handled properly,
pending some further work in progress on the evaluator.


# 81c848a14a380679a439cccb9e10b60d05bd6fbc 14-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Rework expression parsing API.

ExpressionInfo:
- No longer stores an explicit result type (this is inferred from
evaluation of the expression itself now).
- Introduce class ExpressionResult for returning the result of an
expression computation. This can currently take the form of either
a primitive value, or a value node object.
- Adjust UserInterfaceListener and ExpressionInfo::Listener to take
the above changes into account, and correspondingly adjust all
callers/listeners.

CLanguageExpressionEvaluator:
- Introduce child class Operand. This subsumes the functionality that
was previously in the separate Number class, and can represent a
primitive value, a value node or a type. Also has functionality to
implicity handle type promotion/inferring when performing calculations
between operands.
- Adjust expression parser to operate in terms of Operands rather than
Numbers. This allows a number of improvements, most notably that an
expression can now return a value node as a result rather than only
a primitive number. This capability isn't yet fully used, but paves
the way for future uses such as an expression that evaluates to a data
member, a global variable, or an arbitrary pointer of a particular type.
- Various cleanups/simplifications that were possible as a result of the above
changes.

ExpressionEvaluationWindow/ExpressionPromptWindow:
- Remove type menu field, since the expression API no longer uses it.

Adding/removing expressions in the VariablesView is temporarily disabled,
pending some further rework there to properly handle the new result object.


# 46593adfbcf47d7bbd06c59b37dc9e6477efe538 14-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix #11459.

- When saving our view state, only save a new set of values if a stack
frame clear is pending. Otherwise, check if there is a previously
existing view state, and take over its values. This ensures that we
correctly remember our previous values when the user is simply switching
stack frames while in a stopped state.


# 743d5dbeb567358b319f33499ea8da95c47c6de5 09-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix potential crash.

VariablesView:
- Check to ensure the stack frame actually does have a function
object associated with it before attempting to use it, as this
isn't always the case.


# d1c9ffed344208f126f1b8fd446347556c03e976 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Cleanup.

Team:
- Remove expression evaluation event / listener hook. This doesn't
really belong to the Team anyways.

UserInterfaceListener:
- ExpressionEvaluationRequested() now takes an ExpressionInfo object
rather than the individual subcomponents.

ExpressionEvaluationJob:
- Notification of expression evaluation completion is now handled
via the info object's listener interface rather than the Team.

Others:
- Adjust all users of expressions to set themselves up as
ExpressionInfo::Listener subclasses, and consequently add themselves
to the respective info object when requesting evaluation. This
significantly simplifies various things, and also ensures that no
one accidentally gets notified of an expression they didn't actually
ask for, which could occur with the previous Team-based listener
interface. Make all other required adjustments for new interface
usage.

No functional change intended.


# e646545b6094fd589a1068525b81ee4de8daa3ac 08-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Save/restore expression node values.

- This allows expression results to be highlighted for value changes
as we already do for regular variable values.


# b7e72db3cc4ff5bb929a83cdf8a47fbd347615ed 02-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Implement first part of #11387.

VariablesView:
- The view now keeps a mapping of a list of expressions associated
with functions.
- Add actions for adding/removing expressions to variables context menu.
- When setting up to show a new stack frame, also add corresponding expression
nodes and request their evaluation.
- Extend VariablesView::Listener interface to also encompass expression
evaluation requests.
- Don't add context actions for expression nodes.

TeamWindow:
- Implement VariablesView::Listener expression evaluation hook and forward
responses along.


# 2a6c54fb472a9e6faf7ca979163c9ddb67f4b132 02-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Slight tweak to changed value highlighting.

VariablesView::ModelNode:
- Only check if a variable's value has changed if we actually have a
valid previous value to compare against. Otherwise, e.g. variables
that just came into scope but haven't yet been initialized would
show up as changed, while their value is, at that point completely
uninteresting.


# b6c4fc962c6b0d6a0f071069fd0e90053e58f135 01-Nov-2014 Rene Gollent <rene@gollent.com>

Debugger: Implement #9946.

TableCellValueRenderer{Utils}:
- The rendering calls now take a boolean indicating if the value
being rendered differs from its previous state. This is taken
into account by rendering it in a different color to indicate
the change. Adjust all implementing subclasses accordingly.

VariablesView::ModelNode:
- Now stores the previous value of the corresponding value node,
and can be queried if its value has changed. Used by renderers.

VariablesView::_{Add,Apply}ViewStateDescendentInfos():
- When walking the model, also store/restore the values of nodes in the
history.

In summation of all the above changes, when stepping through a function,
we now display values that have changed since the last step, or that have
appeared for the first time in a different color.


# 473a74f72e6580b2c7cbe5a3e748cb4916a039f6 28-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Debugger: Add support for copying variable values.

- Implements a simple copy option in the variables context menu that
allows one to copy the displayed value to the clipboard.


# e10e704441cb6df01b1e8a4765cac7e8e22a0041 25-Apr-2014 Rene Gollent <rene@gollent.com>

Debugger: Fix crash in context menu builder.

A value node might not have a location due to e.g. issues resolving its parent.
Guard against this case and simply return early as we won't be able to take any
meaningful actions on such a node. Fixes the second crash listed in #10781.


# 1ea8fd5216a6c2c7b48efc1f4f5f774864fc8692 14-Sep-2013 Rene Gollent <anevilyak@gmail.com>

Debugger: Add missing std::nothrow.


# 20c5fc4aa6dbafde619c385e912d41ea6d847527 14-Sep-2013 Rene Gollent <anevilyak@gmail.com>

Debugger: Add missing std::nothrow.


# a7376ac17537ebef664373fada57d5d75ac2e818 30-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Fix remaining flickering for #9841.

- Revert hrev45802. However, implement the same essential logic in
the TeamWindow itself, and have it guard the StackTraceView,
VariablesView, and step control buttons. This fixes flickering
in between short steps since it prevents the intermediate clear
from happening unnecessarily.
- Implement appropriate guards for the interim wait state.


# c2d6b9fa8ee19bb8a505f294315cc649feed33c7 30-Jun-2013 Rene Gollent <anevilyak@gmail.com>

Reduce flickering in VariablesView.

Since the individual _AddNode() invocations notify their node additions,
NotifyTableModelReset() isn't really appropriate here after all, since
the net effect will be seeing all the nodes getting added, then removed
again, then re-added. Also fixes the fact that the variables wouldn't get
cleared when picking Run, until we stopped again.


# 325f7bb4ec436d8b39b6352877c60b48d4daf2b4 21-May-2013 Rene Gollent <anevilyak@gmail.com>

Show correct type in case a typecast has taken place.


# e312ed26ef0570a3be4dd3271eebe55dc668929e 19-May-2013 Rene Gollent <anevilyak@gmail.com>

Add "Cast to array" context option.

Implements a simple context shortcut allowing to cast a pointer variable
directly to a 10-element array of the type it points to. Resolves #9778.


# f297d6591d97d915526ed09bedc24011369d9d2b 20-May-2013 Rene Gollent <anevilyak@gmail.com>

Relax range setting constraints for arrays.

- VariablesView now detects if a container's range is fixed or not,
and uses that to adjust both the prompt it displays and whether or not
the parsed ranges are bounds checked.
- ArrayValueNode now returns the currently user-set range rather than
the dimension constraints, since those might not always be accurate.


# d51ab41d49c22818ab2701f7aa52c6257369f4ab 17-May-2013 Rene Gollent <anevilyak@gmail.com>

Fix oversight in set visible range support.

Detect the case where we have a pointer to an array type, as seen
when typecasting a pointer to an array, and present the set visible
range option for these as well.


# c05a041eac2efd14e3e77ac1cc0f3e89fe89f4c5 17-May-2013 Rene Gollent <anevilyak@gmail.com>

Add Type column to VariablesView. Resolves #9779.


# 5d8c967faccd81b7645f67dab943d7a02a29beb4 15-May-2013 Rene Gollent <anevilyak@gmail.com>

VariablesView: Switch back to NotifyNodesRemoved().


# ad6158096cc2a81e355597469c319b05a27eb7d8 15-May-2013 Rene Gollent <anevilyak@gmail.com>

VariablesView: Use Notify{NodesCleared,TableModelReset}().


# 9187efd1a9be8115b5c57a0b6d045d6a27b19317 04-May-2013 Rene Gollent <anevilyak@gmail.com>

Clean up context menu building.

Even if the inspect action is unavailable, continue building the rest
of the actions, since they can apply regardless of the value location.


# 6a2d6f5062d43a3f5f631c699d3f0a90b0eff8bd 27-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix a case where values wouldn't be requested properly.

- If a node was already expanded, and we then removed/replaced
its children, those wouldn't automatically get their value nodes
added. Consequently, value retrieval for them would fail until
the parent was collapsed/re-expanded. If we encounter such a
model node when receiving a value request, notify the table model so
it can construct the value node appropriately.


# 7198436cc28efa74e16de67ec8cc1068a9856068 27-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix several crash problems in Debugger.

- When removing a value node in response to ValueNodeChildrenDeleted,
we need to recurse down and ensure that each node's children are
likewise notified/removed. Otherwise we end up with deleted child
nodes in the node table, which in turn led to potential crashes when
either adjusting a node's type and/or its visible array range.


# 920576bbfe5e1fef889b6ede5d80f93d14466ea4 21-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Implement setting visible ranges on containers.

- Objects that act as ranged containers now expose a menu option
which allows the user to input a comma-separated list of ranges to
show. These need not be contiguous, ergo one can show only
the first and last elements of an array, or some random set of
indices in the middle as well.


# b11fd75b4bc0750c848dd0fba782ed6779899a3a 27-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix broken ValueNodeChildrenDeleted() behavior.

- Due to the way the item list was being iterated,
ValueNodeChildrenDeleted() would only actually remove every
other child.


# aa366c07b1f68b27e5d2bee66d33773e8aaa8b0c 25-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Add an information blurb option to PromptWindow.

- PromptWindow now takes a parameter which contains optional
informational text to display above the text control.

- Adjust callers.


# bbaaaf2eae7dd43553adfbc5f801c2602eec1d21 24-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Improve VariableView's tooltip handling.

- Make GetToolTipInfo() sensitive to the column being hovered over.
If hovering over the variable name, we display its value location
information as before. However, if hovering over the value column,
the tooltip now displays the full value of the variable, if
available.


# 1b74b08f755ecb9b477b4cbbf264ccd0156746ad 16-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Save/restore renderer settings in view state.


# 41cec3e6d4273471b8cd44704d97f220f5bb0857 15-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Remember any applied typecasts in VariableViewState.

Preserves and restores typecasts across steps like we already do
for node expansion states.


# 57245d2b73a953fefdcb07cfbfae51fc4eee42ad 14-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Slight cosmetic adjustment.

If the current node is an address type and has as its only child an array type,
use the same approach we do for pointers to objects and hide the intermediate
dereference.


# f21f5c7cee824ee71301887c100ef406a0d12de5 13-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Fix build.


# 692d2db52a75b4fe2713d0f00479c5e324c8c2a8 13-Apr-2013 Rene Gollent <anevilyak@gmail.com>

Notify user if the we fail to parse the type.


# a4df762f175895c6b319621b293d8a33d9101714 16-Dec-2012 Rene Gollent <anevilyak@gmail.com>

Fix #9294.

- Fix incorrect order of operations in ValueNodeManager.
- Upon receiving a changed notification, VariableTableModel needs to
make tree table aware that the previous nodes have been removed.


# 2c32e7436061bec593041522f1419875aaa27660 08-Dec-2012 Rene Gollent <anevilyak@gmail.com>

64-bit fixes.


# 13c04a36b0f40ffc7c6684ce09b51ce5a8ab596e 08-Dec-2012 Rene Gollent <anevilyak@gmail.com>

Adapt VariablesView to use the ValueNodeManager.


# ea788ed9cb3a9c5dfef12516c1a6c5f15b08e2ad 30-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Correction to previous leak fix.

- The actual reason the hidden node wasn't being released as expected
was that ContainerListener::ModelNodeHidden() added a reference on
behalf of its indirect target, while the latter never actually
took ownership of said reference.


# f4621a90de482327d3f3d98c6535b1910778b848 30-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Don't leak the hidden child if present.


# 6be1e373d5e9a35abffab37a82b15a1b10de20e0 30-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Fix typecasting in address->compound node case.

- In the special case of an address node with a hidden child, we
must send notifications for removal of the hidden compound's
children rather than for the hidden node itself. Otherwise the
base TreeTable's state gets out of sync, leading to a crash when
attempting to typecast such a node.


# 2a2e3bafa2daaf31ff8be2c7b6782529f63774e3 06-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Add UI hooks for watchpoints.

This gets basic watchpoint support working. Right clicking on a variable
and picking Watch now opens a prompt with the inferred address, size
and watch type for the user to adjust.

Still needs some work to get them to show/be modifiable in the breakpoints
tab and to get them to respect architectural restrictions (i.e. on x86 we
can realistically only do 2 hardware watchpoints and those are restricted
to write watch), at least until we support software emulated watchpoints.


# 9b64b5d24114743378bd72d9bf150ef514b23b09 06-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Add TODO note.


# 7b74c56650d6e8320b3b0de1fea0a13d0359a312 05-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Cleanup: move expression parsing for types to SourceLanguage.


# 9e7a46be2010116155a07fb4b5aa6b627eeb7be2 05-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Extend typecasting to support pointer/address types.

We now parse the user's input to see if it should be a pointer/reference
type and create a derived type accordingly. This allows casting to e.g.
StyledEditApp*.


# 8a4cdf3e60da41bfd7fbdf7a754c6f69a6e817a1 04-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Fix handling of notifications. Basic typecasting now works.

Still needs a bit of work to properly grok pointer/reference types.


# ba4dad8b4946485e7bf90fc400032abd16c08a62 04-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Fix child-creation-needs-value nodes.

We only want to do a delete/create cycle if the node actually changed. Fixes
BMessageValueNode.


# e8cdcede0390efb556762e241e2381935baf0532 04-Nov-2012 Rene Gollent <anevilyak@gmail.com>

Start adding support for typecast support.

Not yet complete/working.


# f4b1ddb580a6a390c7b11b66c799de95014c2c29 23-Jul-2012 Ingo Weinhold <ingo_weinhold@gmx.de>

Debugger: Coding style: normalize naming, some whitespace fixes

* TeamUISettings[Factory] -> TeamUiSettings[Factory]
* GUITeamUISettings -> GuiTeamUiSettings
* GUISettingsUtils -> GuiSettingsUtils


# 3a5779744ed04ad4dd000e1680e0872b3b99b56e 18-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Handle compound node values in variables view.

- If the node we're looking at is a compound node, retrieve its location
and show that as the value with an indicator to clarify that it's an object.

- Minor tweaks to tooltip format.
- Style cleanups.


# 666222d3fd5bb1964565da7875df2570a0783673 17-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Resolve register names, print memory piece size information.


# 2216ccb7e2396a7356edfb5b1c8777fc853937be 17-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Implement support for tooltips in VariableView. Implements #8286.

- These show the memory or register location(s) of the variable over which
the mouse is hovering.


# 17ef26a9f8319415aa24e54aae6cfdbea1624071 15-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Add inspection context menu action.

- TableCellContextMenuTracker now supports menus that don't have a settings
submenu, since some variables won't have renderer settings but will still
have context actions.

- Add _GetContextActionsForNode() to retrieve the list of contextual actions
available for a given model node. Currently this is only adds an action
to inspect the memory address of the highlighted value, but will be extended
for other actions later.


# 0712121cdb6b4dfe51d183615944a0f116447d1d 15-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Add support for actions to TableCellContextMenuTracker.

- VariablesView's context menu tracker now optionally accepts contextual
actions to add to the menu in addition to the current renderer settings.


# 11102e3848bcd78ce9a90478ad6992f966fae5c6 19-Nov-2011 Rene Gollent <anevilyak@gmail.com>

Reworked GUI settings storage.

- Simplified things so each window simply records all its settings into
a BMessage, which is what ultimately goes into the actual UI settings.

- Added settings storage/retrieval to the various sub views of the
team window. This means that the column widths/positioning on all
views hosting a column list view are now also preserved and restored.


# 781a7c361d819f5f18b39dd6f8775370d81e8415 23-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Relocate incorrectly placed call, and guard it as needed.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42471 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 657d27403c39666074357f6b1fa0ab993758fbec 23-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Fix indentation.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42470 a95241bf-73f2-0310-859d-f6bbb57e9c96


# efc5edfaa28d0e693a6e3e6fac72a17cf163a419 23-Jul-2011 Rene Gollent <anevilyak@gmail.com>

* Rename and make VariableTableModel::_GetTreePath() public so VariablesView
can make use of it, and adjust existing callers.
* For nodes that need child creation to be deferred until after value
resolution succeeds, send a request to the view to restore their view state
once child creation is complete. This gets the view state working again
for things like BPoints and other complex structures embedded in a BMessage.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42469 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 55715512617f711f9bbdf68fd1440f84545e4efc 19-Jul-2011 Rene Gollent <anevilyak@gmail.com>

For value nodes with deferred child creation, value loading needs to be
requested once the deferred load has been complete, otherwise their values
would never be loaded if their parent node was already expanded while stepping
through the debugger. There still remains an issue with saving/restoring view
state for such nodes though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42457 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 977db2b5956e8fe201ca00a586312e076a98b1cf 04-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Add clarifying comment.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42375 a95241bf-73f2-0310-859d-f6bbb57e9c96


# aa069e23fa0e61fe876bbff5c95a9f26e8236f4d 03-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Add a listener hook to notify the parent when model nodes are marked hidden.
This allows the variables view to request value/location resolution for those
nodes as needed, since it's otherwise unaware of their existence. This is
necessary in order to correctly handle nodes which require resolution to
happen in order to publish their children, since their value would otherwise
never be requested when they're hidden by virtue of being the child of an
address node.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42369 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 002d5e97298f6fa8dabc3123ab5a9575133b25a4 03-Jul-2011 Rene Gollent <anevilyak@gmail.com>

Only mark a compound child hidden if it is in fact the only child present.
Interesting side effects otherwise occur in the case where multiple compound
children are present, since other areas of the table model depend on the node
only being hidden in the single child case.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42367 a95241bf-73f2-0310-859d-f6bbb57e9c96


# abacf1bd3b939c79c31cf8fb619e8f1130fc0ceb 27-Jun-2011 Rene Gollent <anevilyak@gmail.com>

* Extend ValueNode to be able to indicate that a node needs child creation
requests delayed until its location/value have been resolved. Update
VariablesView to make use of that flag.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42333 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5d70f1ae3e3488258e8982c4c45cff620891364c 19-Jun-2011 Rene Gollent <anevilyak@gmail.com>

Get the variable view state more or less usable again. Still needs some more work to
do things like preserve renderer settings and some other details.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42254 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c3e066cf6d35a86d29396d4e740f9811e506b66c 16-Dec-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced uses of obsolescent BReference[able] API.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39869 a95241bf-73f2-0310-859d-f6bbb57e9c96


# be12bce74a98e0d86ad6801578cad5ba0529bed7 06-Nov-2009 Axel Dörfler <axeld@pinc-software.de>

* Fixed GCC2 build, and a warning that should have fired in GCC4 as well.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33912 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 59ea286fac914a808edc6989becc77dadff10383 05-Nov-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* EnumerationValue -> EnumeratorValue
* Since some types don't have names (e.g. pointer types or anonymous structs or
unions), each type does now also have a unique ID. The global type cache
registers types by ID and by name (if they have one). This fixes clashes of
types with empty names.
* Completely refactored the code dealing with variable values. Formerly we had
Variable and TypeComponentPath to navigate to a component, mapped to a
BVariant representing the value. Now we have:
* Interface Value with various subclasses (BoolValue, IntegerValue, etc.) to
represent a value, with the flexibility for more esoteric values.
* A tree of ValueNode+ValueNodeChild objects to represent the components of a
variable. On top of each ValueNodeChild sits a ValueNode representing the
value of the component, potentially having ValueNodeChild children. This
should allow casting a component value, simply by replacing its ValueNode.
* Interface ValueHandler and various implementations for the different value
types. It is basically a factory for classes allowing to format/display a
value.
* ValueHandlerRoster -- a registry for ValueHandlers, finding the best one
for a given value.
* Interface TypeHandler and various implementions for the different type
kinds (primitive, compound, address, etc.). It is basically a factory for
ValueNodes for that type.
* TypeHandlerRoster -- a registry for TypeHandlers, finding the best one
for a given type.

That's still a bit work in progress. It introduces at least one regression:
The VariablesView doesn't save/restore its state anymore. Will take a while
until that is added back.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33907 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e3a631c0b48d904a9502dabb157639539484da53 15-Oct-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

* Introduced interface UserInterface, which abstracts the user interface code.
* Added implementation GraphicalUserInterface for the current GUI.

TeamDebugger does no longer know about TeamWindow.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33594 a95241bf-73f2-0310-859d-f6bbb57e9c96