diff --git a/client.go b/client.go index 469065d..376ab45 100644 --- a/client.go +++ b/client.go @@ -548,7 +548,7 @@ func (client *Client) handleEventLoop() { emit(event, client) // Turn an unhandled input into a raw command. - if event.kind == "input" && !event.Killed() { + if event.kind == "input" && !event.preventedDefault { client.SendQueued(strings.ToUpper(event.verb) + " " + event.Text) } diff --git a/event.go b/event.go index 0c5244e..8dec817 100644 --- a/event.go +++ b/event.go @@ -21,10 +21,10 @@ type Event struct { Text string Tags map[string]string - ctx context.Context - cancel context.CancelFunc - killed bool - hidden bool + ctx context.Context + cancel context.CancelFunc + preventedDefault bool + hidden bool targets []Target targetIds map[Target]string @@ -89,18 +89,13 @@ func (event *Event) Context() context.Context { return event.ctx } -// Kill stops propagation of the event. The context will be killed once +// PreventDefault stops propagation of the event. The context will be killed once // the current event handler returns. // // A use case for this is to prevent the default input handler from firing // on an already prcoessed input event. -func (event *Event) Kill() { - event.killed = true -} - -// Killed returns true if Kill has been called. -func (event *Event) Killed() bool { - return event.killed +func (event *Event) PreventDefault() { + event.preventedDefault = true } // Hide will not stop propagation, but it will allow output handlers to know not to diff --git a/handle.go b/handle.go index fa1a702..a6b39f8 100644 --- a/handle.go +++ b/handle.go @@ -17,9 +17,6 @@ func emit(event *Event, client *Client) { eventHandler.mutex.RLock() for _, handler := range eventHandler.handlers { handler(event, client) - if event.killed { - break - } } eventHandler.mutex.RUnlock() } diff --git a/handlers/input.go b/handlers/input.go index df85757..a55212d 100644 --- a/handlers/input.go +++ b/handlers/input.go @@ -12,7 +12,7 @@ func Input(event *irc.Event, client *irc.Client) { // /msg sends an action to a target specified before the message. case "input.msg": { - event.Kill() + event.PreventDefault() targetName, text := ircutil.ParseArgAndText(event.Text) if targetName == "" || text == "" { @@ -30,7 +30,7 @@ func Input(event *irc.Event, client *irc.Client) { // /text (or text without a command) sends a message to the target. case "input.text": { - event.Kill() + event.PreventDefault() if event.Text == "" { client.EmitNonBlocking(irc.NewErrorEvent("input", "Usage: /text ")) @@ -53,7 +53,7 @@ func Input(event *irc.Event, client *irc.Client) { // /me and /action sends a CTCP ACTION. case "input.me", "input.action": { - event.Kill() + event.PreventDefault() if event.Text == "" { client.EmitNonBlocking(irc.NewErrorEvent("input", "Usage: /me ")) @@ -76,7 +76,7 @@ func Input(event *irc.Event, client *irc.Client) { // /describe sends an action to a target specified before the message, like /msg. case "input.describe": { - event.Kill() + event.PreventDefault() targetName, text := ircutil.ParseArgAndText(event.Text) if targetName == "" || text == "" { @@ -94,7 +94,7 @@ func Input(event *irc.Event, client *irc.Client) { // /m is a shorthand for /mode that targets the current channel case "input.m": { - event.Kill() + event.PreventDefault() if event.Text == "" { client.EmitNonBlocking(irc.NewErrorEvent("input", "Usage: /m ")) diff --git a/handlers/mroleplay.go b/handlers/mroleplay.go index 89da66c..caaa4af 100644 --- a/handlers/mroleplay.go +++ b/handlers/mroleplay.go @@ -60,7 +60,7 @@ func MRoleplay(event *irc.Event, client *irc.Client) { client.SendQueuedf("%s %s %s :%s", npcCommand, channel.Name(), nick, cut) } - event.Kill() + event.PreventDefault() } case "input.scenec": { @@ -81,7 +81,7 @@ func MRoleplay(event *irc.Event, client *irc.Client) { client.SendQueuedf("SCENE %s :%s", channel.Name(), cut) } - event.Kill() + event.PreventDefault() } } }