Merge branch 'master' of ssh://git.haiku-os.org/haiku

This commit is contained in:
Adrien Destugues - PulkoMandy
2012-07-19 21:01:31 +02:00
6 changed files with 173 additions and 17 deletions
+1
View File
@@ -20,6 +20,7 @@ OptionalPackageDependencies Git : Expat Curl OpenSSL LibIconv ;
OptionalPackageDependencies GitDoc : Man Git ;
OptionalPackageDependencies ICU-devel : DevelopmentBase ;
OptionalPackageDependencies LibLayout : DevelopmentBase ;
OptionalPackageDependencies LibXML2 : XZ-Utils ;
OptionalPackageDependencies Man : Groff ;
OptionalPackageDependencies Tar : LibIconv ;
OptionalPackageDependencies Python : Bzip ;
+10 -10
View File
@@ -475,13 +475,13 @@ if [ IsOptionalHaikuImagePackageAdded CMake ] {
} else {
if $(HAIKU_GCC_VERSION[1]) >= 4 {
InstallOptionalHaikuImagePackage
cmake-2.8.4-r1a3-x86-gcc4-2011-05-23.zip
: $(baseURL)/cmake-2.8.4-r1a3-x86-gcc4-2011-05-23.zip
cmake-2.8.5-x86-gcc4-2012-07-18.zip
: $(baseURL)/cmake-2.8.5-x86-gcc4-2012-07-18.zip
: : true ;
} else {
InstallOptionalHaikuImagePackage
cmake-2.8.4-r1a3-x86-gcc2-2011-05-19.zip
: $(baseURL)/cmake-2.8.4-r1a3-x86-gcc2-2011-05-19.zip
cmake-2.8.5-x86-gcc2-2012-07-16.zip
: $(baseURL)/cmake-2.8.5-x86-gcc2-2012-07-16.zip
: : true ;
}
}
@@ -1206,12 +1206,12 @@ if [ IsOptionalHaikuImagePackageAdded LibXML2 ] {
} else {
if $(HAIKU_GCC_VERSION[1]) >= 4 {
InstallOptionalHaikuImagePackage
libxml2-2.8.0-x86-gcc4-2012-06-18.zip
: $(baseURL)/libxml2-2.8.0-x86-gcc4-2012-06-18.zip ;
libxml2-2.8.0-x86-gcc4-2012-07-18.zip
: $(baseURL)/libxml2-2.8.0-x86-gcc4-2012-07-18.zip ;
} else {
InstallOptionalHaikuImagePackage
libxml2-2.8.0-x86-gcc2-2012-06-21.zip
: $(baseURL)/libxml2-2.8.0-x86-gcc2-2012-06-21.zip ;
libxml2-2.8.0-x86-gcc2-2012-07-17.zip
: $(baseURL)/libxml2-2.8.0-x86-gcc2-2012-07-17.zip ;
}
}
}
@@ -1986,8 +1986,8 @@ if [ IsOptionalHaikuImagePackageAdded XZ-Utils ] {
Echo "No optional package XZ-Utils available for $(TARGET_ARCH)" ;
} else {
InstallOptionalHaikuImagePackage
xz-utils-5.0.1-r1a3-x86-gcc4-2011-05-24.zip
: $(baseURL)/xz-utils-5.0.1-r1a3-x86-gcc4-2011-05-24.zip ;
xz-utils-5.0.1-x86-gcc4-2012-07-18.zip
: $(baseURL)/xz-utils-5.0.1-x86-gcc4-2012-07-18.zip ;
AddExpanderRuleToHaikuImage "application/x-xz" : .tar.xz
: "tar -Jtvf \\0045s"
: "tar -Jxvf \\0045s"
@@ -1,5 +1,6 @@
/*
* Copyright 2009, Ingo Weinhold, [email protected].
* Copyright 2012, Rene Gollent, [email protected].
* Distributed under the terms of the MIT License.
*/
@@ -226,6 +227,14 @@ TreeTableModel::NotifyNodesChanged(const TreeTablePath& path, int32 childIndex,
}
// #pragma mark - TreeTableToolTipProvider
TreeTableToolTipProvider::~TreeTableToolTipProvider()
{
}
// #pragma mark - TreeTableListener
@@ -650,6 +659,7 @@ TreeTable::TreeTable(const char* name, uint32 flags, border_style borderStyle,
:
AbstractTable(name, flags, borderStyle, showHorizontalScrollbar),
fModel(NULL),
fToolTipProvider(NULL),
fRootNode(NULL),
fSelectionModel(this),
fIgnoreSelectionChange(0)
@@ -731,6 +741,13 @@ TreeTable::SetTreeTableModel(TreeTableModel* model)
}
void
TreeTable::SetToolTipProvider(TreeTableToolTipProvider* toolTipProvider)
{
fToolTipProvider = toolTipProvider;
}
TreeTableSelectionModel*
TreeTable::SelectionModel()
{
@@ -810,6 +827,31 @@ TreeTable::RemoveTreeTableListener(TreeTableListener* listener)
}
bool
TreeTable::GetToolTipAt(BPoint point, BToolTip** _tip)
{
if (fToolTipProvider == NULL)
return AbstractTable::GetToolTipAt(point, _tip);
// get the table row
BRow* row = RowAt(point);
if (row == NULL)
return AbstractTable::GetToolTipAt(point, _tip);
TreeTableRow* treeRow = dynamic_cast<TreeTableRow*>(row);
// get the table column
BColumn* column = ColumnAt(point);
int32 columnIndex = column != NULL ? column->LogicalFieldNum() : -1;
TreeTablePath path;
_GetPathForNode(treeRow->Node(), path);
return fToolTipProvider->GetToolTipForTablePath(path, columnIndex,
_tip);
}
void
TreeTable::SelectionChanged()
{
@@ -1,5 +1,6 @@
/*
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
* Copyright 2012, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#ifndef TREE_TABLE_H
@@ -122,6 +123,17 @@ private:
};
class TreeTableToolTipProvider {
public:
virtual ~TreeTableToolTipProvider();
virtual bool GetToolTipForTablePath(
const TreeTablePath& path,
int32 columnIndex, BToolTip** _tip) = 0;
// columnIndex can be -1, if not in a column
};
class TreeTableListener {
public:
virtual ~TreeTableListener();
@@ -157,6 +169,11 @@ public:
bool SetTreeTableModel(TreeTableModel* model);
TreeTableModel* GetTreeTableModel() const { return fModel; }
void SetToolTipProvider(
TreeTableToolTipProvider* toolTipProvider);
TreeTableToolTipProvider* ToolTipProvider() const
{ return fToolTipProvider; }
TreeTableSelectionModel* SelectionModel();
void SelectNode(const TreeTablePath& path,
@@ -177,6 +194,8 @@ public:
TreeTableListener* listener);
protected:
virtual bool GetToolTipAt(BPoint point, BToolTip** _tip);
virtual void SelectionChanged();
virtual AbstractColumn* CreateColumn(TableColumn* column);
@@ -226,6 +245,7 @@ private:
private:
TreeTableModel* fModel;
TreeTableToolTipProvider* fToolTipProvider;
TreeTableNode* fRootNode;
TreeTableSelectionModel fSelectionModel;
ListenerList fListeners;
@@ -13,6 +13,7 @@
#include <Looper.h>
#include <PopUpMenu.h>
#include <ToolTip.h>
#include <AutoDeleter.h>
#include <AutoLocker.h>
@@ -25,6 +26,7 @@
#include "FunctionInstance.h"
#include "GUISettingsUtils.h"
#include "MessageCodes.h"
#include "Register.h"
#include "SettingsMenu.h"
#include "StackFrame.h"
#include "StackFrameValues.h"
@@ -312,10 +314,12 @@ protected:
targetView);
return;
}
} else if (value.Type() == B_STRING_TYPE) {
fField.SetString(value.ToString());
} else {
// fall back to drawing an empty string
fField.SetString("");
}
// fall back to drawing an empty string
fField.SetString("");
fField.SetWidth(Width());
fColumn.DrawField(&fField, rect, targetView);
}
@@ -345,7 +349,8 @@ protected:
// #pragma mark - VariableTableModel
class VariablesView::VariableTableModel : public TreeTableModel {
class VariablesView::VariableTableModel : public TreeTableModel,
public TreeTableToolTipProvider {
public:
VariableTableModel();
~VariableTableModel();
@@ -379,6 +384,10 @@ public:
void NotifyNodeChanged(ModelNode* node);
void NotifyNodeHidden(ModelNode* node);
virtual bool GetToolTipForTablePath(
const TreeTablePath& path,
int32 columnIndex, BToolTip** _tip);
private:
struct NodeHashDefinition {
typedef ValueNodeChild* KeyType;
@@ -1105,8 +1114,29 @@ VariablesView::VariableTableModel::GetValueAt(void* object, int32 columnIndex,
_value.SetTo(node->Name(), B_VARIANT_DONT_COPY_DATA);
return true;
case 1:
if (node->GetValue() == NULL)
if (node->GetValue() == NULL) {
ValueLocation* location = node->NodeChild()->Location();
if (location == NULL)
return false;
Type* nodeChildRawType = node->NodeChild()->Node()->GetType()
->ResolveRawType(false);
if (nodeChildRawType->Kind() == TYPE_COMPOUND)
{
if (location->CountPieces() > 1)
return false;
BString data;
ValuePieceLocation piece = location->PieceAt(0);
if (piece.type != VALUE_PIECE_LOCATION_MEMORY)
return false;
data.SetToFormat("[@ 0x%llx]", piece.address);
_value.SetTo(data);
return true;
}
return false;
}
_value.SetTo(node, VALUE_NODE_TYPE);
return true;
@@ -1159,6 +1189,55 @@ VariablesView::VariableTableModel::NotifyNodeHidden(ModelNode* node)
}
bool
VariablesView::VariableTableModel::GetToolTipForTablePath(
const TreeTablePath& path, int32 columnIndex, BToolTip** _tip)
{
ModelNode* node = (ModelNode*)NodeForPath(path);
if (node == NULL)
return false;
if (node->NodeChild()->LocationResolutionState() != B_OK)
return false;
ValueLocation* location = node->NodeChild()->Location();
BString tipData;
for (int32 i = 0; i < location->CountPieces(); i++) {
ValuePieceLocation piece = location->PieceAt(i);
BString pieceData;
switch (piece.type) {
case VALUE_PIECE_LOCATION_MEMORY:
pieceData.SetToFormat("(%ld): Address: 0x%llx, Size: "
"%lld bytes", i, piece.address, piece.size);
break;
case VALUE_PIECE_LOCATION_REGISTER:
{
Architecture* architecture = fThread->GetTeam()->GetArchitecture();
pieceData.SetToFormat("(%ld): Register (%s)",
i, architecture->Registers()[piece.reg].Name());
break;
}
default:
break;
}
tipData += pieceData;
if (i < location->CountPieces() - 1)
tipData += "\n";
}
if (tipData.IsEmpty())
return false;
*_tip = new(std::nothrow) BTextToolTip(tipData);
if (*_tip == NULL)
return false;
return true;
}
status_t
VariablesView::VariableTableModel::_AddNode(Variable* variable,
ModelNode* parent, ValueNodeChild* nodeChild, bool isPresentationNode,
@@ -1734,6 +1813,7 @@ VariablesView::_Init()
if (fVariableTableModel->Init() != B_OK)
throw std::bad_alloc();
fVariableTable->SetTreeTableModel(fVariableTableModel);
fVariableTable->SetToolTipProvider(fVariableTableModel);
fContainerListener = new ContainerListener(this);
fVariableTableModel->SetContainerListener(fContainerListener);
+15 -2
View File
@@ -3512,8 +3512,11 @@ OutlineView::MouseDown(BPoint position)
fCurrentRow = new_row;
fCurrentField = new_field;
fCurrentCode = B_INSIDE_VIEW;
BMessage* message = Window()->CurrentMessage();
int32 buttons = 1;
message->FindInt32("buttons", &buttons);
fCurrentColumn->MouseDown(fMasterView, fCurrentRow,
fCurrentField, fFieldRect, position, 1);
fCurrentField, fFieldRect, position, buttons);
}
if (!fEditMode) {
@@ -4090,6 +4093,16 @@ OutlineView::RemoveRow(BRow* row)
fItemsHeight -= subTreeHeight;
FixScrollBar(false);
int32 indent = 0;
float top = 0.0;
if (FindRow(fVisibleRect.top, &indent, &top) == NULL && ScrollBar(B_VERTICAL) != NULL) {
// after removing this row, no rows are actually visible any more,
// force a scroll to make them visible again
if (fItemsHeight > fVisibleRect.Height())
ScrollBy(0.0, fItemsHeight - fVisibleRect.Height() - Bounds().top);
else
ScrollBy(0.0, -Bounds().top);
}
if (parentRow != NULL) {
parentRow->fChildList->RemoveItem(row);
if (parentRow->fChildList->CountItems() == 0) {
@@ -4294,7 +4307,7 @@ OutlineView::FixScrollBar(bool scrollToFit)
float maxScrollBarValue = fItemsHeight - fVisibleRect.Height();
vScrollBar->SetProportion(fVisibleRect.Height() / fItemsHeight);
// If the user is scrolled down too far when makes the range smaller, the list
// If the user is scrolled down too far when making the range smaller, the list
// will jump suddenly, which is undesirable. In this case, don't fix the scroll
// bar here. In ScrollTo, it checks to see if this has occured, and will
// fix the scroll bars sneakily if the user has scrolled up far enough.