Merge from layout management branch.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18649 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2006-08-26 16:21:15 +00:00
parent 01595708f3
commit 9ecf9d1c1d
277 changed files with 45889 additions and 747 deletions
+35 -9
View File
@@ -43,6 +43,7 @@ All rights reserved.
#include <Debug.h>
#include <Directory.h>
#include <fs_info.h>
#include <IconUtils.h>
#include <MenuItem.h>
#include <OS.h>
#include <PopUpMenu.h>
@@ -631,6 +632,8 @@ FlickerFreeStringView::Draw(BRect)
edge_info eInfo;
switch (Alignment()) {
case B_ALIGN_LEFT:
case B_ALIGN_HORIZONTAL_UNSET:
case B_ALIGN_USE_FULL_WIDTH:
{
// If the first char has a negative left edge give it
// some more room by shifting that much more to the right.
@@ -1335,22 +1338,45 @@ GetAppIconFromAttr(BFile *file, BBitmap *result, icon_size size)
BAppFileInfo appFileInfo(file);
return appFileInfo.GetIcon(result, size);
#else
const char *attrName = size == B_LARGE_ICON ? kAttrLargeIcon : kAttrMiniIcon;
uint32 type = size == B_LARGE_ICON ? LARGE_ICON_TYPE : MINI_ICON_TYPE;
char buffer[1024];
const char *attrName = kAttrIcon;
uint32 type = B_RAW_TYPE;
// try vector icon
attr_info ainfo;
status_t err = err = file->GetAttrInfo(attrName, &ainfo);
if (err)
return err;
status_t ret = file->GetAttrInfo(attrName, &ainfo);
ssize_t readResult = file->ReadAttr(attrName, type, 0, buffer, (size_t)ainfo.size);
if (ret == B_OK) {
uint8 buffer[ainfo.size];
ssize_t readResult = file->ReadAttr(attrName, type, 0, buffer,
ainfo.size);
if (readResult == ainfo.size) {
if (BIconUtils::GetVectorIcon(buffer, ainfo.size, result) == B_OK)
return B_OK;
}
}
// try again with R5 icons
attrName = size == B_LARGE_ICON ? kAttrLargeIcon : kAttrMiniIcon;
type = size == B_LARGE_ICON ? LARGE_ICON_TYPE : MINI_ICON_TYPE;
ret = file->GetAttrInfo(attrName, &ainfo);
if (ret < B_OK)
return ret;
uint8 buffer[ainfo.size];
ssize_t readResult = file->ReadAttr(attrName, type, 0, buffer, ainfo.size);
if (readResult <= 0)
return (status_t)readResult;
result->SetBits(buffer, result->BitsLength(), 0, B_CMAP8);
if (result->ColorSpace() != B_CMAP8) {
ret = BIconUtils::ConvertFromCMAP8(buffer, size, size, size, result);
} else {
result->SetBits(buffer, result->BitsLength(), 0, B_CMAP8);
}
return B_OK;
return ret;
#endif // B_APP_FILE_INFO_IS_FAST
}