Ticket #3161: tabview.diff

File tabview.diff, 2.7 KB (added by aljen, 16 months 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);