Skip to content

Commit

Permalink
Debugger: Adjust initial configuration of VariablesView.
Browse files Browse the repository at this point in the history
- VariablesView is now passed a ValueNodeManager to use at
  construction time, rather than creating one itself internally.
- Adjust TeamWindow accordingly.
  • Loading branch information
anevilyak committed Nov 10, 2015
1 parent 90da71b commit be32382
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 16 deletions.
Expand Up @@ -57,6 +57,7 @@
#include "TypeComponentPath.h"
#include "UiUtils.h"
#include "UserInterface.h"
#include "ValueNodeManager.h"
#include "Value.h"
#include "Variable.h"
#include "WatchPromptWindow.h"
Expand Down Expand Up @@ -1049,8 +1050,10 @@ TeamWindow::_Init()
// .SetInsets(0.0f)
.Add(fBreakpointsView = BreakpointsView::Create(fTeam, this));

ValueNodeManager* manager = new ValueNodeManager;

// add local variables tab
BView* tab = fVariablesView = VariablesView::Create(this);
BView* tab = fVariablesView = VariablesView::Create(this, manager);
fLocalsTabView->AddTab(tab);

// add registers tab
Expand Down
23 changes: 10 additions & 13 deletions src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp
Expand Up @@ -647,7 +647,7 @@ class VariablesView::VariableValueColumn : public StringTableColumn {
class VariablesView::VariableTableModel : public TreeTableModel,
public TreeTableToolTipProvider {
public:
VariableTableModel();
VariableTableModel(ValueNodeManager* manager);
~VariableTableModel();

status_t Init();
Expand Down Expand Up @@ -1106,30 +1106,27 @@ VariablesView::ContainerListener::ModelNodeRestoreViewStateRequested(
// #pragma mark - VariableTableModel


VariablesView::VariableTableModel::VariableTableModel()
VariablesView::VariableTableModel::VariableTableModel(
ValueNodeManager* manager)
:
fThread(NULL),
fNodeManager(NULL),
fNodeManager(manager),
fContainerListener(NULL),
fNodeTable()
{
fNodeManager->AcquireReference();
}


VariablesView::VariableTableModel::~VariableTableModel()
{
if (fNodeManager != NULL)
fNodeManager->ReleaseReference();
fNodeManager->ReleaseReference();
}


status_t
VariablesView::VariableTableModel::Init()
{
fNodeManager = new(std::nothrow) ValueNodeManager();
if (fNodeManager == NULL)
return B_NO_MEMORY;

return fNodeTable.Init();
}

Expand Down Expand Up @@ -1809,12 +1806,12 @@ VariablesView::~VariablesView()


/*static*/ VariablesView*
VariablesView::Create(Listener* listener)
VariablesView::Create(Listener* listener, ValueNodeManager* manager)
{
VariablesView* self = new VariablesView(listener);

try {
self->_Init();
self->_Init(manager);
} catch (...) {
delete self;
throw;
Expand Down Expand Up @@ -2489,7 +2486,7 @@ VariablesView::ExpressionEvaluated(ExpressionInfo* info, status_t result,


void
VariablesView::_Init()
VariablesView::_Init(ValueNodeManager* manager)
{
fVariableTable = new TreeTable("variable list", 0, B_FANCY_BORDER);
AddChild(fVariableTable->ToView());
Expand All @@ -2503,7 +2500,7 @@ VariablesView::_Init()
fVariableTable->AddColumn(new StringTableColumn(2, "Type", 80, 40, 1000,
B_TRUNCATE_END, B_ALIGN_LEFT));

fVariableTableModel = new VariableTableModel;
fVariableTableModel = new VariableTableModel(manager);
if (fVariableTableModel->Init() != B_OK)
throw std::bad_alloc();
fVariableTable->SetTreeTableModel(fVariableTableModel);
Expand Down
Expand Up @@ -26,6 +26,7 @@ class ValueLocation;
class ValueNode;
class ValueNodeChild;
class ValueNodeContainer;
class ValueNodeManager;
class Value;
class Variable;
class VariableEditWindow;
Expand All @@ -42,7 +43,8 @@ class VariablesView : public BGroupView, private TreeTableListener,
VariablesView(Listener* listener);
~VariablesView();

static VariablesView* Create(Listener* listener);
static VariablesView* Create(Listener* listener,
ValueNodeManager* manager);
// throws

void SetStackFrame(Thread* thread,
Expand Down Expand Up @@ -93,7 +95,7 @@ class VariablesView : public BGroupView, private TreeTableListener,
ExpressionInfoTable;

private:
void _Init();
void _Init(ValueNodeManager* manager);

void _RequestNodeValue(ModelNode* node);
status_t _GetContextActionsForNode(ModelNode* node,
Expand Down

0 comments on commit be32382

Please sign in to comment.