Skip to content

Commit 975bfc3

Browse files
committed
Collapsible: ignore content and header resize events, where necessary
1 parent 92d46b7 commit 975bfc3

File tree

1 file changed

+23
-13
lines changed

1 file changed

+23
-13
lines changed

src/feathers/controls/Collapsible.hx

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -113,8 +113,8 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
113113

114114
private var header:DisplayObject;
115115
private var headerMeasurements:Measurements = new Measurements();
116-
117-
private var _ignoreHeaderEvents:Bool = false;
116+
private var _ignoreHeaderInteractiveEvents:Bool = false;
117+
private var _ignoreHeaderResize:Bool = false;
118118

119119
private var _currentScrollRect:Rectangle;
120120
private var _scrollRect1:Rectangle = new Rectangle();
@@ -447,6 +447,8 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
447447
}
448448

449449
private function measure():Bool {
450+
var oldIgnoreHeaderResize = this._ignoreHeaderResize;
451+
this._ignoreHeaderResize = true;
450452
var measureHeader:IMeasureObject = null;
451453
if ((this.header is IMeasureObject)) {
452454
measureHeader = cast this.header;
@@ -456,8 +458,12 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
456458
if ((this.header is IValidating)) {
457459
(cast this.header : IValidating).validateNow();
458460
}
461+
this._ignoreHeaderResize = oldIgnoreHeaderResize;
462+
459463
var measureContent:IMeasureObject = null;
460464
if (this._content != null) {
465+
var oldIgnoreContentResize = this._ignoreContentResize;
466+
this._ignoreContentResize = true;
461467
if ((this._content is IMeasureObject)) {
462468
measureContent = cast this._content;
463469
}
@@ -466,6 +472,7 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
466472
if ((this._content is IValidating)) {
467473
(cast this._content : IValidating).validateNow();
468474
}
475+
this._ignoreContentResize = oldIgnoreContentResize;
469476
}
470477

471478
this._measuredOpenHeight = this.header.height;
@@ -541,14 +548,14 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
541548
this._collapseActuator = null;
542549
FeathersEvent.dispatch(this, Event.CANCEL);
543550
}
544-
var oldIgnoreHeaderEvents = this._ignoreHeaderEvents;
545-
this._ignoreHeaderEvents = true;
551+
var oldIgnoreHeaderInteractiveEvents = this._ignoreHeaderInteractiveEvents;
552+
this._ignoreHeaderInteractiveEvents = true;
546553
if ((this.header is IOpenCloseToggle)) {
547554
(cast this.header : IOpenCloseToggle).opened = this._pendingOpened;
548555
} else if ((this.header is IToggle)) {
549556
(cast this.header : IToggle).selected = this._pendingOpened;
550557
}
551-
this._ignoreHeaderEvents = oldIgnoreHeaderEvents;
558+
this._ignoreHeaderInteractiveEvents = oldIgnoreHeaderInteractiveEvents;
552559
if (this._pendingAnimation) {
553560
this._pendingHeight = this.actualHeight;
554561
if (this._pendingOpened) {
@@ -603,14 +610,14 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
603610
this._opened = this._pendingOpened;
604611
this._pendingOpened = null;
605612
} else {
606-
var oldIgnoreHeaderEvents = this._ignoreHeaderEvents;
607-
this._ignoreHeaderEvents = true;
613+
var oldIgnoreHeaderInteractiveEvents = this._ignoreHeaderInteractiveEvents;
614+
this._ignoreHeaderInteractiveEvents = true;
608615
if ((this.header is IOpenCloseToggle)) {
609616
(cast this.header : IOpenCloseToggle).opened = this._opened;
610617
} else if ((this.header is IToggle)) {
611618
(cast this.header : IToggle).selected = this._opened;
612619
}
613-
this._ignoreHeaderEvents = oldIgnoreHeaderEvents;
620+
this._ignoreHeaderInteractiveEvents = oldIgnoreHeaderInteractiveEvents;
614621
if (this._content != null) {
615622
this._content.visible = this._opened;
616623
}
@@ -710,21 +717,21 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
710717
}
711718

712719
private function collapsible_header_openHandler(event:Event):Void {
713-
if (this._ignoreHeaderEvents) {
720+
if (this._ignoreHeaderInteractiveEvents) {
714721
return;
715722
}
716723
this.openContent(true);
717724
}
718725

719726
private function collapsible_header_closeHandler(event:Event):Void {
720-
if (this._ignoreHeaderEvents) {
727+
if (this._ignoreHeaderInteractiveEvents) {
721728
return;
722729
}
723730
this.closeContent(true);
724731
}
725732

726733
private function collapsible_header_changeHandler(event:Event):Void {
727-
if (this._ignoreHeaderEvents) {
734+
if (this._ignoreHeaderInteractiveEvents) {
728735
return;
729736
}
730737
var toggleHeader:IToggle = cast header;
@@ -736,7 +743,7 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
736743
}
737744

738745
private function collapsible_header_triggerHandler(event:TriggerEvent):Void {
739-
if (this._ignoreHeaderEvents) {
746+
if (this._ignoreHeaderInteractiveEvents) {
740747
return;
741748
}
742749
if (this._opened) {
@@ -747,7 +754,7 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
747754
}
748755

749756
private function collapsible_header_clickHandler(event:MouseEvent):Void {
750-
if (this._ignoreHeaderEvents) {
757+
if (this._ignoreHeaderInteractiveEvents) {
751758
return;
752759
}
753760
if (this._opened) {
@@ -758,6 +765,9 @@ class Collapsible extends FeathersControl implements IOpenCloseToggle {
758765
}
759766

760767
private function collapsible_content_resizeHandler(event:Event):Void {
768+
if (this._ignoreContentResize) {
769+
return;
770+
}
761771
setInvalid(LAYOUT);
762772
}
763773
}

0 commit comments

Comments
 (0)