Renamed Event.Kill to Event.PreventDefault

This commit is contained in:
2018-06-28 13:51:14 +02:00
parent 72d63b405a
commit 659a2ce067
5 changed files with 15 additions and 23 deletions
+1 -1
View File
@@ -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)
}
+7 -12
View File
@@ -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
-3
View File
@@ -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()
}
+5 -5
View File
@@ -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 <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 <text...>"))
@@ -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 <text...>"))
+2 -2
View File
@@ -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()
}
}
}