equal
deleted
inserted
replaced
68 { |
68 { |
69 hook_list_data_t h = { handler, 0, userdata }; |
69 hook_list_data_t h = { handler, 0, userdata }; |
70 GSList *el = g_slist_find_custom(hk_handler_queue, &h, |
70 GSList *el = g_slist_find_custom(hk_handler_queue, &h, |
71 (GCompareFunc) hk_queue_search_cb); |
71 (GCompareFunc) hk_queue_search_cb); |
72 if (el) { |
72 if (el) { |
73 g_free (el->data); |
73 g_free(el->data); |
74 hk_handler_queue = g_slist_delete_link(hk_handler_queue, el); |
74 hk_handler_queue = g_slist_delete_link(hk_handler_queue, el); |
75 } |
75 } |
76 } |
76 } |
77 #endif |
77 #endif |
78 |
78 |
93 guint rtype = ROSTER_TYPE_USER; |
93 guint rtype = ROSTER_TYPE_USER; |
94 char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL; |
94 char *wmsg = NULL, *bmsg = NULL, *mmsg = NULL; |
95 GSList *roster_usr; |
95 GSList *roster_usr; |
96 unsigned mucnicklen = 0; |
96 unsigned mucnicklen = 0; |
97 const char *ename = NULL; |
97 const char *ename = NULL; |
|
98 gboolean urgent = FALSE; |
98 |
99 |
99 if (encrypted == ENCRYPTED_PGP) |
100 if (encrypted == ENCRYPTED_PGP) |
100 message_flags |= HBB_PREFIX_PGPCRYPT; |
101 message_flags |= HBB_PREFIX_PGPCRYPT; |
101 else if (encrypted == ENCRYPTED_OTR) |
102 else if (encrypted == ENCRYPTED_OTR) |
102 message_flags |= HBB_PREFIX_OTRCRYPT; |
103 message_flags |= HBB_PREFIX_OTRCRYPT; |
170 if (nick) { |
171 if (nick) { |
171 // Let's see if we are the message sender, in which case we'll |
172 // Let's see if we are the message sender, in which case we'll |
172 // highlight it. |
173 // highlight it. |
173 if (resname && !strcmp(resname, nick)) { |
174 if (resname && !strcmp(resname, nick)) { |
174 message_flags |= HBB_PREFIX_HLIGHT_OUT; |
175 message_flags |= HBB_PREFIX_HLIGHT_OUT; |
175 } else if (!settings_opt_get_int("muc_disable_nick_hl")) { |
176 } else { |
176 // We're not the sender. Can we see our nick? |
177 // We're not the sender. Can we see our nick? |
177 const char *msgptr = msg; |
178 const char *msgptr = msg; |
178 while ((msgptr = strcasestr(msgptr, nick)) != NULL) { |
179 while ((msgptr = strcasestr(msgptr, nick)) != NULL) { |
179 const char *leftb, *rightb; |
180 const char *leftb, *rightb; |
180 // The message contains our nick. Let's check it's not |
181 // The message contains our nick. Let's check it's not |
189 // Check left boundary |
190 // Check left boundary |
190 if (leftb && (iswalnum(get_char(leftb)) || get_char(leftb) == '_')) |
191 if (leftb && (iswalnum(get_char(leftb)) || get_char(leftb) == '_')) |
191 continue; |
192 continue; |
192 // Check right boundary |
193 // Check right boundary |
193 if (!iswalnum(get_char(rightb)) && get_char(rightb) != '_') |
194 if (!iswalnum(get_char(rightb)) && get_char(rightb) != '_') |
|
195 urgent = TRUE; |
|
196 if (urgent && !settings_opt_get_int("muc_disable_nick_hl")) |
194 message_flags |= HBB_PREFIX_HLIGHT; |
197 message_flags |= HBB_PREFIX_HLIGHT; |
195 } |
198 } |
196 } |
199 } |
197 } |
200 } |
198 } |
201 } |
243 { "hook", "hook-message-in" }, |
246 { "hook", "hook-message-in" }, |
244 { "jid", bjid }, |
247 { "jid", bjid }, |
245 { "resource", resname }, |
248 { "resource", resname }, |
246 { "message", wmsg }, |
249 { "message", wmsg }, |
247 { "groupchat", is_groupchat ? "true" : "false" }, |
250 { "groupchat", is_groupchat ? "true" : "false" }, |
|
251 { "urgent", urgent ? "true" : "false" }, |
248 { NULL, NULL }, |
252 { NULL, NULL }, |
249 }; |
253 }; |
250 while (h) { |
254 while (h) { |
251 hook_list_data_t *data = h->data; |
255 hook_list_data_t *data = h->data; |
252 if (data->flags & HOOK_MESSAGE_IN) |
256 if (data->flags & HOOK_MESSAGE_IN) |
253 (data->handler) (HOOK_MESSAGE_IN, args, data->userdata); |
257 (data->handler) (HOOK_MESSAGE_IN, args, data->userdata); |
254 h = g_slist_next (h); |
258 h = g_slist_next(h); |
255 } |
259 } |
256 } |
260 } |
257 } |
261 } |
258 #endif |
262 #endif |
259 |
263 |
348 }; |
352 }; |
349 while (h) { |
353 while (h) { |
350 hook_list_data_t *data = h->data; |
354 hook_list_data_t *data = h->data; |
351 if (data->flags & HOOK_MESSAGE_OUT) |
355 if (data->flags & HOOK_MESSAGE_OUT) |
352 (data->handler) (HOOK_MESSAGE_OUT, args, data->userdata); |
356 (data->handler) (HOOK_MESSAGE_OUT, args, data->userdata); |
353 h = g_slist_next (h); |
357 h = g_slist_next(h); |
354 } |
358 } |
355 } |
359 } |
356 } |
360 } |
357 #endif |
361 #endif |
358 |
362 |
446 ns[0] = imstatus2char[status]; |
450 ns[0] = imstatus2char[status]; |
447 while (h) { |
451 while (h) { |
448 hook_list_data_t *data = h->data; |
452 hook_list_data_t *data = h->data; |
449 if (data->flags & HOOK_STATUS_CHANGE) |
453 if (data->flags & HOOK_STATUS_CHANGE) |
450 (data->handler) (HOOK_STATUS_CHANGE, args, data->userdata); |
454 (data->handler) (HOOK_STATUS_CHANGE, args, data->userdata); |
451 h = g_slist_next (h); |
455 h = g_slist_next(h); |
452 } |
456 } |
453 } |
457 } |
454 } |
458 } |
455 #endif |
459 #endif |
456 |
460 |
479 ns[0] = imstatus2char[new_status]; |
483 ns[0] = imstatus2char[new_status]; |
480 while (h) { |
484 while (h) { |
481 hook_list_data_t *data = h->data; |
485 hook_list_data_t *data = h->data; |
482 if (data->flags & HOOK_MY_STATUS_CHANGE) |
486 if (data->flags & HOOK_MY_STATUS_CHANGE) |
483 (data->handler) (HOOK_MY_STATUS_CHANGE, args, data->userdata); |
487 (data->handler) (HOOK_MY_STATUS_CHANGE, args, data->userdata); |
484 h = g_slist_next (h); |
488 h = g_slist_next(h); |
485 } |
489 } |
486 } |
490 } |
487 } |
491 } |
488 #endif |
492 #endif |
489 |
493 |
505 }; |
509 }; |
506 while (h) { |
510 while (h) { |
507 hook_list_data_t *data = h->data; |
511 hook_list_data_t *data = h->data; |
508 if (data->flags & HOOK_POST_CONNECT) |
512 if (data->flags & HOOK_POST_CONNECT) |
509 (data->handler) (HOOK_POST_CONNECT, args, data->userdata); |
513 (data->handler) (HOOK_POST_CONNECT, args, data->userdata); |
510 h = g_slist_next (h); |
514 h = g_slist_next(h); |
511 } |
515 } |
512 } |
516 } |
513 } |
517 } |
514 #endif |
518 #endif |
515 |
519 |
541 }; |
545 }; |
542 while (h) { |
546 while (h) { |
543 hook_list_data_t *data = h->data; |
547 hook_list_data_t *data = h->data; |
544 if (data->flags & HOOK_PRE_DISCONNECT) |
548 if (data->flags & HOOK_PRE_DISCONNECT) |
545 (data->handler) (HOOK_PRE_DISCONNECT, args, data->userdata); |
549 (data->handler) (HOOK_PRE_DISCONNECT, args, data->userdata); |
546 h = g_slist_next (h); |
550 h = g_slist_next(h); |
547 } |
551 } |
548 } |
552 } |
549 } |
553 } |
550 #endif |
554 #endif |
551 |
555 |