@@ -60,6 +60,17 @@ class TabBarLayout extends DefaultLayout {
60
60
filler .left = container .width ;
61
61
}
62
62
63
+ var leftFiller : Component = _component .findComponent (" tabbar-filler-left" , false );
64
+ if (leftFiller != null ) {
65
+ leftFiller .height = _component .height ;
66
+ }
67
+
68
+ var rightFiller : Component = _component .findComponent (" tabbar-filler-right" , false );
69
+ if (rightFiller != null ) {
70
+ rightFiller .left = _component .width - rightFiller .width ;
71
+ rightFiller .height = _component .height ;
72
+ }
73
+
63
74
var max : Float = 0 ;
64
75
for (button in container .childComponents ) {
65
76
button .validateNow ();
@@ -80,12 +91,12 @@ class TabBarLayout extends DefaultLayout {
80
91
if (right != null ) {
81
92
x - = right .width ;
82
93
}
83
- left .left = x + 1 ;
94
+ left .left = x - left . style . marginLeft ;
84
95
left .top = (_component .height / 2 ) - (left .height / 2 );
85
96
}
86
97
87
98
if (right != null && hidden (right ) == false ) {
88
- right .left = _component .width - right .width ;
99
+ right .left = _component .width - right .width - right . marginLeft ;
89
100
right .top = (_component .height / 2 ) - (right .height / 2 );
90
101
}
91
102
}
@@ -206,6 +217,7 @@ private class SelectedIndex extends DataBehaviour {
206
217
207
218
builder ._containerPosition = x ;
208
219
builder ._container .left = x ;
220
+ builder .checkLeftRightFillers ();
209
221
}
210
222
211
223
_component .invalidateComponentLayout ();
@@ -409,6 +421,8 @@ private class Builder extends CompositeBuilder {
409
421
_filler = new Box ();
410
422
_filler .id = " tabbar-filler" ;
411
423
_filler .addClass (" tabbar-filler" );
424
+ _filler .scriptAccess = false ;
425
+ _filler .includeInLayout = false ;
412
426
_tabbar .addComponent (_filler );
413
427
}
414
428
if (_container == null ) {
@@ -492,21 +506,21 @@ private class Builder extends CompositeBuilder {
492
506
}
493
507
494
508
public override function addComponent (child : Component ): Component {
495
- if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler ) {
509
+ if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler && child . id != " tabbar-filler-left " && child . id != " tabbar-filler-right " ) {
496
510
return addTab (child );
497
511
}
498
512
return null ;
499
513
}
500
514
501
515
public override function addComponentAt (child : Component , index : Int ): Component {
502
- if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler ) {
516
+ if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler && child . id != " tabbar-filler-left " && child . id != " tabbar-filler-right " ) {
503
517
return addTabAt (child , index );
504
518
}
505
519
return null ;
506
520
}
507
521
508
522
public override function removeComponent (child : Component , dispose : Bool = true , invalidate : Bool = true ): Component {
509
- if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler ) {
523
+ if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler && child . id != " tabbar-filler-left " && child . id != " tabbar-filler-right " ) {
510
524
var index = _container .getComponentIndex (child );
511
525
if (index != - 1 ) {
512
526
_tabbar .removeTab (index );
@@ -525,14 +539,14 @@ private class Builder extends CompositeBuilder {
525
539
}
526
540
527
541
public override function getComponentIndex (child : Component ): Int {
528
- if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler ) {
542
+ if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler && child . id != " tabbar-filler-left " && child . id != " tabbar-filler-right " ) {
529
543
return _container .getComponentIndex (child );
530
544
}
531
545
return - 1 ;
532
546
}
533
547
534
548
public override function setComponentIndex (child : Component , index : Int ): Component {
535
- if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler ) {
549
+ if (child != _container && child != _scrollLeft && child != _scrollRight && child != _filler && child . id != " tabbar-filler-left " && child . id != " tabbar-filler-right " ) {
536
550
return _container .setComponentIndex (child , index );
537
551
}
538
552
return null ;
@@ -559,6 +573,8 @@ private class Builder extends CompositeBuilder {
559
573
_containerPosition = null ;
560
574
}
561
575
576
+ checkLeftRightFillers ();
577
+
562
578
return true ;
563
579
}
564
580
@@ -607,6 +623,40 @@ private class Builder extends CompositeBuilder {
607
623
}
608
624
_containerPosition = x ;
609
625
_container .left = x ;
626
+ checkLeftRightFillers ();
627
+ }
628
+
629
+ private function checkLeftRightFillers () {
630
+ var leftFiller = _tabbar .findComponent (" tabbar-filler-left" , false );
631
+ if (_containerPosition < 0 ) {
632
+ if (leftFiller == null ) {
633
+ leftFiller = new Box ();
634
+ leftFiller .id = " tabbar-filler-left" ;
635
+ leftFiller .addClass (" tabbar-filler-left" );
636
+ leftFiller .scriptAccess = false ;
637
+ leftFiller .includeInLayout = false ;
638
+ _tabbar .addComponent (leftFiller );
639
+ }
640
+ leftFiller .show ();
641
+ } else if (leftFiller != null ) {
642
+ leftFiller .hide ();
643
+ }
644
+
645
+ var rightFiller = _tabbar .findComponent (" tabbar-filler-right" , false );
646
+ var max = - (_container .width - _tabbar .width );
647
+ if (_containerPosition > max ) {
648
+ if (rightFiller == null ) {
649
+ rightFiller = new Box ();
650
+ rightFiller .id = " tabbar-filler-right" ;
651
+ rightFiller .addClass (" tabbar-filler-right" );
652
+ rightFiller .scriptAccess = false ;
653
+ rightFiller .includeInLayout = false ;
654
+ _tabbar .addComponent (rightFiller );
655
+ }
656
+ rightFiller .show ();
657
+ } else if (rightFiller != null ) {
658
+ rightFiller .hide ();
659
+ }
610
660
}
611
661
612
662
private function scrollRight () {
@@ -632,6 +682,7 @@ private class Builder extends CompositeBuilder {
632
682
}
633
683
_containerPosition = x ;
634
684
_container .left = x ;
685
+ checkLeftRightFillers ();
635
686
}
636
687
637
688
private function hideScrollButtons () {
0 commit comments