diff --git a/main.go b/main.go index a9fd94b..6f7739f 100644 --- a/main.go +++ b/main.go @@ -32,6 +32,7 @@ var ( preferredApps map[string]interface{} exclusions []string hyprlandMonitors []monitor + beenScrolled bool ) var categoryNames = [...]string{ @@ -518,6 +519,15 @@ func main() { resultWindow.SetEvents(int(gdk.ALL_EVENTS_MASK)) resultWindow.SetPolicy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) + vAdj := resultWindow.GetVAdjustment() + vAdj.Connect("value-changed", func() { + beenScrolled = true + }) + hAdj := resultWindow.GetVAdjustment() + hAdj.Connect("value-changed", func() { + beenScrolled = true + }) + resultWindow.Connect("button-release-event", func(_ *gtk.ScrolledWindow, event *gdk.Event) bool { btnEvent := gdk.EventButtonNewFromEvent(event) if btnEvent.Button() == 3 { diff --git a/uicomponents.go b/uicomponents.go index 6997570..ea79909 100644 --- a/uicomponents.go +++ b/uicomponents.go @@ -264,11 +264,18 @@ func flowBoxButton(entry desktopEntry) *gtk.Button { r := substring(desc, 0, 117) desc = fmt.Sprintf("%s…", string(r)) } + + button.Connect("button-press-event", func() { + beenScrolled = false + }) + button.Connect("button-release-event", func(btn *gtk.Button, e *gdk.Event) bool { btnEvent := gdk.EventButtonNewFromEvent(e) if btnEvent.Button() == 1 { - launch(exec, terminal) - return true + if !beenScrolled { + launch(exec, terminal) + return true + } } else if btnEvent.Button() == 3 { pinItem(ID) return true