Ticket #3161: tabview.diff

File tabview.diff, 2.7 KB (added by aljen, 16 years ago)
  • src/kits/interface/TabView.cpp

     
    1010
    1111#include <string.h>
    1212
     13#include <LayoutUtils.h>
    1314#include <List.h>
    1415#include <Message.h>
    1516#include <PropertyInfo.h>
     
    131132    if (!owner || !View() || !owner->Window())
    132133        return;
    133134
     135    BRect viewBounds(fView->Bounds());
     136    BRect ownerBounds(owner->Bounds());
    134137    owner->AddChild(fView);
     138    if (viewBounds.Width() == 0 && viewBounds.Height() == 0
     139        && ownerBounds.Width() > 0 && ownerBounds.Height() > 0) {
     140        fView->ResizeTo(ownerBounds.Width(), ownerBounds.Height());
     141    }
    135142    //fView->Show();
    136143
    137144    fSelected = true;
     
    913920void
    914921BTabView::GetPreferredSize(float *width, float *height)
    915922{
    916     BView::GetPreferredSize(width, height);
     923    BSize size = PreferredSize();
     924    if (width) {
     925        *width = size.width;
     926    }
     927   
     928    if (height) {
     929        *height = size.height;
     930    }
    917931}
    918932
    919933
    920934void
    921935BTabView::ResizeToPreferred()
    922936{
    923     BView::ResizeToPreferred();
     937    BSize size = PreferredSize();
     938    ResizeTo(size.width, size.height);
    924939}
    925940
    926941
     942BSize
     943BTabView::MinSize()
     944{
     945    BSize size;
     946   
     947    if (CountTabs())
     948        size = TabAt(0)->View()->MinSize();
     949   
     950    size.height += TabHeight() + 6.0f;
     951    size.width += 6.0f;
     952   
     953    return BLayoutUtils::ComposeSize(ExplicitMinSize(), size);
     954}
     955
     956
     957BSize
     958BTabView::MaxSize()
     959{
     960    return BLayoutUtils::ComposeSize(ExplicitMaxSize(),
     961            BSize(B_SIZE_UNLIMITED, B_SIZE_UNLIMITED));
     962}
     963
     964
     965BSize
     966BTabView::PreferredSize()
     967{
     968    BSize size;
     969   
     970    if (CountTabs())
     971        size = TabAt(0)->View()->PreferredSize();
     972   
     973    size.height += TabHeight() + 6.0f;
     974    size.width += 6.0f;
     975   
     976    return BLayoutUtils::ComposeSize(ExplicitPreferredSize(), size);
     977}
     978
     979
    927980BHandler *
    928981BTabView::ResolveSpecifier(BMessage *message, int32 index,
    929982    BMessage *specifier, int32 what, const char *property)
  • headers/os/interface/TabView.h

     
    150150virtual void            SetFlags(uint32 flags);
    151151virtual void            SetResizingMode(uint32 mode);
    152152
    153 virtual void            GetPreferredSize(float *width, float *height);
    154 virtual void            ResizeToPreferred();
    155 
     153virtual void            ResizeToPreferred();
     154virtual void            GetPreferredSize(float* width, float* height);
     155   
     156virtual BSize           MinSize();
     157virtual BSize           MaxSize();
     158virtual BSize           PreferredSize();
     159   
    156160virtual BHandler        *ResolveSpecifier(BMessage *message, int32 index,
    157161                            BMessage *specifier, int32 what, const char *property);
    158162virtual status_t        GetSupportedSuites(BMessage *message);