| 754 | } |
| 755 | |
| 756 | func (g *Gui) processEvent() error { |
| 757 | contentOnly := false |
| 758 | |
| 759 | select { |
| 760 | case ev := <-g.gEvents: |
| 761 | task := g.NewTask() |
| 762 | defer func() { task.Done() }() |
| 763 | |
| 764 | if err := g.handleError(g.handleEvent(&ev)); err != nil { |
| 765 | return err |
| 766 | } |
| 767 | case ev := <-g.userEvents: |
| 768 | contentOnly = ev.contentOnly |
| 769 | defer func() { ev.task.Done() }() |
| 770 | |
| 771 | if err := g.handleError(ev.f(g)); err != nil { |
| 772 | return err |
| 773 | } |
| 774 | } |
| 775 | |
| 776 | remainingContentOnly, err := g.processRemainingEvents() |
| 777 | if err != nil { |
| 778 | return err |
| 779 | } |
| 780 | contentOnly = contentOnly && remainingContentOnly |
| 781 | |
| 782 | if contentOnly { |
| 783 | return g.flushContentOnly(g.views) |
| 784 | } |
| 785 | return g.flush() |
| 786 | } |
| 787 | |
| 788 | // processRemainingEvents handles the remaining events in the events pool. |
| 789 | // Returns true if all processed events were content-only. |