File tree Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Expand file tree Collapse file tree 2 files changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -612,10 +612,11 @@ func (d *DummyWidget) Build() {
612
612
613
613
// TabItemWidget is an item in TabBarWidget.
614
614
type TabItemWidget struct {
615
- label string
616
- open * bool
617
- flags TabItemFlags
618
- layout Layout
615
+ label string
616
+ open * bool
617
+ flags TabItemFlags
618
+ layout Layout
619
+ eventHandler * EventHandler
619
620
}
620
621
621
622
// TabItem creates new TabItem.
@@ -648,6 +649,12 @@ func (t *TabItemWidget) Flags(flags TabItemFlags) *TabItemWidget {
648
649
return t
649
650
}
650
651
652
+ // EventHandler allows to attach a custym EventHandler to the tab item in order to detect events on it.
653
+ func (t * TabItemWidget ) EventHandler (handler * EventHandler ) * TabItemWidget {
654
+ t .eventHandler = handler
655
+ return t
656
+ }
657
+
651
658
// Layout is a layout displayed when item is opened.
652
659
func (t * TabItemWidget ) Layout (widgets ... Widget ) * TabItemWidget {
653
660
t .layout = Layout (widgets )
@@ -656,7 +663,13 @@ func (t *TabItemWidget) Layout(widgets ...Widget) *TabItemWidget {
656
663
657
664
// BuildTabItem executes tab item build steps.
658
665
func (t * TabItemWidget ) BuildTabItem () {
659
- if imgui .BeginTabItemV (t .label , t .open , imgui .TabItemFlags (t .flags )) {
666
+ start := imgui .BeginTabItemV (t .label , t .open , imgui .TabItemFlags (t .flags ))
667
+
668
+ if t .eventHandler != nil {
669
+ t .eventHandler .Build ()
670
+ }
671
+
672
+ if start {
660
673
t .layout .Build ()
661
674
imgui .EndTabItem ()
662
675
}
Original file line number Diff line number Diff line change @@ -161,7 +161,9 @@ func loop() {
161
161
g .TabItem ("Multiline Input" ).Layout (
162
162
g .Label ("This is first tab with a multiline input text field" ),
163
163
g .InputTextMultiline (& multiline ).Size (g .Auto , g .Auto ),
164
- ),
164
+ ).EventHandler (g .Event ().OnClick (g .MouseButtonLeft , func () {
165
+ fmt .Println ("MultipleInput tab clicked!" )
166
+ })),
165
167
g .TabItem ("Tree" ).Layout (
166
168
g .TreeNode ("TreeNode1" ).Flags (g .TreeNodeFlagsCollapsingHeader | g .TreeNodeFlagsDefaultOpen ).Layout (
167
169
g .Custom (func () {
You can’t perform that action at this time.
0 commit comments