get_vnode could be called with a NULL privateNode in the kernel, but not
in userlandfs. This would crash in cdda mount code (and from a grep
search, also with several other filesystems).
Now cdda can be mounted with userlandfs, and CDs read that way, but for
some reason there is no CDDB renaming of the tracks in that case.
The menu would try to relayout itself, but fail to get the supermenu
bounds as the looper for it was not locked in that case.
This fixes the crash with two downsides:
* The menu width isn't adjusted to match the parent menu (mostly visible
in BMenuFields)
* There is some flickering as the menu is updated
Fixes#9863 (Network prefs part).
- 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.
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.
It is possible to set a custom layout on a BBox, which is then applied
to the children excluding the label. However, the label size must still
be used when computing the minimal size of the BBox in that case.
* Factor out the notification sending in a single method
* Tweak the "progress" values so the progress bar goes from 0 to 100% in
order, and only once, during the restart
* Remove one notification that was needlessly sent twice
* Some other small cleanups
Final fix for #8171.
- 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.
- When creating a derived type, adjust the name accordingly to indicate
the additional qualifiers. Fixes a problem where casted type names would be
displayed as their base type only, even if they included pointers or array
subscripts.
It's ther that the view background color is inherited from the parent.
Fix option popups having a white background eg. in MediaPlayer
preferences.
Thanks to DeadYak for noticing the problem.
In some locales the title is longer than the space there is for it. Make
sure the boxes are wide enough for the title to display completely.
Fixes#11611.
- Add missing if/else keywords.
- Add missing comma that was preventing some keywords from being
recognized properly.
- Add missing handling of condition operator.
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.
- Remove handling of the power token, as it's not actually valid C/C++ syntax,
and causes problems when parsing more complex pointer types/dereferences.
SourceLanguage/CLanguageFamily/ExpressionEvaluationJob:
- Add TeamTypeInformation parameter to EvaluateExpression() hook. Adjust
implementing subclasses and callers accordingly.
CLanguageExpressionEvaluator:
- Add class InternalVariableID for representing intermediate variables
generated while parsing an expression.
- When parsing an identifier, if we were passed in a type information object,
then first attempt to resolve the name as a type. If not matched, then fall
through to attempting to match it to a value node as before.
- When parsing an atom, check if it resulted in a type. If it did, and there
still remains more of the expression to parse, then parse the result to see
what value/variable to try to apply the typecast to. If the result is a
primitive, generate an appropriate internal variable + value node child for
it, otherwise use the target variable's child. Then, attempt to typecast it
as requested.
- Simplify _EatToken().
- If the final result of an expression is a type, configure the result object
accordingly.
As a result of all the above, an expression can now resolve to a type, allowing
the evaluator to take over the duties of parsing the desired type for a typecast
request in the variables view, and in addition, expressions themselves can now
contain typecasts, which opens up quite a few new possibilities.
- Properly differentiate the size of a parsed hex constant in order
to return a correspondingly sized primitive, rather than always
returning as 64-bit.
- For simply looking up a type, we need neither the register map, nor
the target interface, as those are only necessary for resolution of
values and/or locations.
- Fix memory leak. A reference to the target interface was acquired in
the type context's ctor, but not correspondingly released in the dtor.