Mercurial > ~mikael > mcabber > hg
comparison mcabber/mcabber/screen.c @ 2292:f181418db215
Replace global variable update_roster with scr_update_roster()
author | franky |
---|---|
date | Tue, 01 Nov 2016 18:00:39 +0100 |
parents | 0d350e979bde |
children | fa8365fb6ac2 |
comparison
equal
deleted
inserted
replaced
2291:0d350e979bde | 2292:f181418db215 |
---|---|
154 static int chatstate; /* (0=active, 1=composing, 2=paused) */ | 154 static int chatstate; /* (0=active, 1=composing, 2=paused) */ |
155 static bool lock_chatstate; | 155 static bool lock_chatstate; |
156 static time_t chatstate_timestamp; | 156 static time_t chatstate_timestamp; |
157 static guint chatstate_timeout_id = 0; | 157 static guint chatstate_timeout_id = 0; |
158 | 158 |
159 int update_roster; | 159 int _update_roster; |
160 int utf8_mode; | 160 int utf8_mode; |
161 gboolean chatstates_disabled; | 161 gboolean chatstates_disabled; |
162 gboolean Autoaway; | 162 gboolean Autoaway; |
163 | 163 |
164 #define MAX_KEYSEQ_LENGTH 8 | 164 #define MAX_KEYSEQ_LENGTH 8 |
380 for (head = rostercolrules; head; head = g_slist_next(head)) { | 380 for (head = rostercolrules; head; head = g_slist_next(head)) { |
381 free_rostercolrule(head->data); | 381 free_rostercolrule(head->data); |
382 } | 382 } |
383 g_slist_free(rostercolrules); | 383 g_slist_free(rostercolrules); |
384 rostercolrules = NULL; | 384 rostercolrules = NULL; |
385 scr_update_roster(); | |
385 } | 386 } |
386 | 387 |
387 // Adds, modifies or removes roster coloring rule | 388 // Adds, modifies or removes roster coloring rule |
388 // color set to "-" removes the rule, | 389 // color set to "-" removes the rule, |
389 // otherwise it is modified (if exists) or added | 390 // otherwise it is modified (if exists) or added |
405 } | 406 } |
406 if (!strcmp(color,"-")) { // Delete the rule | 407 if (!strcmp(color,"-")) { // Delete the rule |
407 if (found) { | 408 if (found) { |
408 free_rostercolrule(found->data); | 409 free_rostercolrule(found->data); |
409 rostercolrules = g_slist_delete_link(rostercolrules, found); | 410 rostercolrules = g_slist_delete_link(rostercolrules, found); |
411 scr_update_roster(); | |
410 return TRUE; | 412 return TRUE; |
411 } else { | 413 } else { |
412 scr_LogPrint(LPRINT_NORMAL, "No such color rule, nothing removed"); | 414 scr_LogPrint(LPRINT_NORMAL, "No such color rule, nothing removed"); |
413 return FALSE; | 415 return FALSE; |
414 } | 416 } |
428 rc->wildcard = g_strdup(wildcard); | 430 rc->wildcard = g_strdup(wildcard); |
429 rc->compiled = g_pattern_spec_new(wildcard); | 431 rc->compiled = g_pattern_spec_new(wildcard); |
430 rc->color = cl; | 432 rc->color = cl; |
431 rostercolrules = g_slist_prepend(rostercolrules, rc); | 433 rostercolrules = g_slist_prepend(rostercolrules, rc); |
432 } | 434 } |
435 scr_update_roster(); | |
433 return TRUE; | 436 return TRUE; |
434 } | 437 } |
435 } | 438 } |
436 | 439 |
437 static void parse_colors(void) | 440 static void parse_colors(void) |
1403 chatmode = TRUE; | 1406 chatmode = TRUE; |
1404 if (!win_entry->bd->lock) | 1407 if (!win_entry->bd->lock) |
1405 roster_msg_setflag(winId, special, FALSE); | 1408 roster_msg_setflag(winId, special, FALSE); |
1406 if (!special) | 1409 if (!special) |
1407 roster_setflags(winId, ROSTER_FLAG_LOCK, TRUE); | 1410 roster_setflags(winId, ROSTER_FLAG_LOCK, TRUE); |
1408 update_roster = TRUE; | 1411 scr_update_roster(); |
1409 | 1412 |
1410 // Refresh the window | 1413 // Refresh the window |
1411 scr_update_window(win_entry); | 1414 scr_update_window(win_entry); |
1412 | 1415 |
1413 // Finished :) | 1416 // Finished :) |
1553 setmsgflg = TRUE; | 1556 setmsgflg = TRUE; |
1554 } | 1557 } |
1555 if (!special) { | 1558 if (!special) { |
1556 if (clearmsgflg) { | 1559 if (clearmsgflg) { |
1557 roster_msg_setflag(winId, FALSE, FALSE); | 1560 roster_msg_setflag(winId, FALSE, FALSE); |
1558 update_roster = TRUE; | 1561 scr_update_roster(); |
1559 } else if (setmsgflg) { | 1562 } else if (setmsgflg) { |
1560 roster_msg_setflag(winId, FALSE, TRUE); | 1563 roster_msg_setflag(winId, FALSE, TRUE); |
1561 update_roster = TRUE; | 1564 scr_update_roster(); |
1562 } | 1565 } |
1563 } | 1566 } |
1564 } | 1567 } |
1565 | 1568 |
1566 static char *attention_sign_guard(const gchar *key, const gchar *new_value) | 1569 static char *attention_sign_guard(const gchar *key, const gchar *new_value) |
1567 { | 1570 { |
1568 update_roster = TRUE; | 1571 scr_update_roster(); |
1569 if (g_strcmp0(settings_opt_get(key), new_value)) { | 1572 if (g_strcmp0(settings_opt_get(key), new_value)) { |
1570 guint sign; | 1573 guint sign; |
1571 char *c; | 1574 char *c; |
1572 if (!new_value || !*new_value) | 1575 if (!new_value || !*new_value) |
1573 return NULL; | 1576 return NULL; |
1817 replace_panel(mainstatusPanel, mainstatusWnd); | 1820 replace_panel(mainstatusPanel, mainstatusWnd); |
1818 replace_panel(inputPanel, inputWnd); | 1821 replace_panel(inputPanel, inputWnd); |
1819 } | 1822 } |
1820 | 1823 |
1821 // We'll need to redraw the roster | 1824 // We'll need to redraw the roster |
1822 update_roster = TRUE; | 1825 scr_update_roster(); |
1823 return; | 1826 return; |
1824 } | 1827 } |
1825 | 1828 |
1826 static void resize_win_buffer(gpointer key, gpointer value, gpointer data) | 1829 static void resize_win_buffer(gpointer key, gpointer value, gpointer data) |
1827 { | 1830 { |
2084 int x_pos; | 2087 int x_pos; |
2085 int prefix_length; | 2088 int prefix_length; |
2086 char space[2] = " "; | 2089 char space[2] = " "; |
2087 | 2090 |
2088 // We can reset update_roster | 2091 // We can reset update_roster |
2089 update_roster = FALSE; | 2092 if (_update_roster == FALSE) |
2093 return; | |
2094 _update_roster = FALSE; | |
2090 | 2095 |
2091 buddylist_build(); | 2096 buddylist_build(); |
2092 | 2097 |
2093 getmaxyx(rosterWnd, maxy, maxx); | 2098 getmaxyx(rosterWnd, maxy, maxx); |
2094 maxx--; // Last char is for vertical border | 2099 maxx--; // Last char is for vertical border |
2297 top_panel(inputPanel); | 2302 top_panel(inputPanel); |
2298 update_panels(); | 2303 update_panels(); |
2299 curs_set(cursor_backup); | 2304 curs_set(cursor_backup); |
2300 } | 2305 } |
2301 | 2306 |
2307 void scr_update_roster(void) | |
2308 { | |
2309 _update_roster = TRUE; | |
2310 } | |
2311 | |
2312 | |
2302 // scr_roster_visibility(status) | 2313 // scr_roster_visibility(status) |
2303 // Set the roster visibility: | 2314 // Set the roster visibility: |
2304 // status=1 Show roster | 2315 // status=1 Show roster |
2305 // status=0 Hide roster | 2316 // status=0 Hide roster |
2306 // status=-1 Toggle roster status | 2317 // status=-1 Toggle roster status |
2536 if (chatmode) { | 2547 if (chatmode) { |
2537 buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); | 2548 buddy_setflags(BUDDATA(current_buddy), ROSTER_FLAG_LOCK, TRUE); |
2538 // Remove the readmark if it is at the end of the buffer | 2549 // Remove the readmark if it is at the end of the buffer |
2539 scr_buffer_readmark(-1); | 2550 scr_buffer_readmark(-1); |
2540 } | 2551 } |
2541 // We should rebuild the buddylist but not everytime | 2552 // We should rebuild the buddylist when the last selected buddy isn't |
2553 // displayed anymore | |
2542 if (!(buddylist_get_filter() & 1<<prev_st)) | 2554 if (!(buddylist_get_filter() & 1<<prev_st)) |
2543 buddylist_defer_build(); | 2555 buddylist_defer_build(); |
2544 update_roster = TRUE; | 2556 scr_update_roster(); |
2545 } | 2557 } |
2546 | 2558 |
2547 // scr_roster_top() | 2559 // scr_roster_top() |
2548 // Go to the first buddy in the buddylist | 2560 // Go to the first buddy in the buddylist |
2549 void scr_roster_top(void) | 2561 void scr_roster_top(void) |
2777 for (budstate = 0; budstate < imstatus_size-1; budstate++) | 2789 for (budstate = 0; budstate < imstatus_size-1; budstate++) |
2778 if (strchr(filter, imstatus2char[budstate]) || show_all) | 2790 if (strchr(filter, imstatus2char[budstate]) || show_all) |
2779 status |= 1<<budstate; | 2791 status |= 1<<budstate; |
2780 buddylist_set_filter(status); | 2792 buddylist_set_filter(status); |
2781 buddylist_defer_build(); | 2793 buddylist_defer_build(); |
2782 update_roster = TRUE; | 2794 scr_update_roster(); |
2783 return; | 2795 return; |
2784 } | 2796 } |
2785 | 2797 |
2786 // Display current filter | 2798 // Display current filter |
2787 psfilter = strfilter; | 2799 psfilter = strfilter; |
2965 | 2977 |
2966 win_entry->bd->cleared = FALSE; | 2978 win_entry->bd->cleared = FALSE; |
2967 win_entry->bd->top = NULL; | 2979 win_entry->bd->top = NULL; |
2968 } | 2980 } |
2969 | 2981 |
2970 update_roster = TRUE; | 2982 scr_update_roster(); |
2971 | 2983 |
2972 // Refresh the window | 2984 // Refresh the window |
2973 scr_update_buddy_window(); | 2985 scr_update_buddy_window(); |
2974 | 2986 |
2975 // Finished :) | 2987 // Finished :) |
3318 } else { | 3330 } else { |
3319 current_id = NULL; | 3331 current_id = NULL; |
3320 } | 3332 } |
3321 if (!chatmode || !current_id || strcmp(bjid, current_id) || iscurrentlocked) { | 3333 if (!chatmode || !current_id || strcmp(bjid, current_id) || iscurrentlocked) { |
3322 roster_msg_setflag(bjid, special, TRUE); | 3334 roster_msg_setflag(bjid, special, TRUE); |
3323 update_roster = TRUE; | 3335 scr_update_roster(); |
3324 } | 3336 } |
3325 } | 3337 } |
3326 | 3338 |
3327 // scr_setattentionflag_if_needed(bare_jid, special, value, action) | 3339 // scr_setattentionflag_if_needed(bare_jid, special, value, action) |
3328 // Set the attention flag unless we're already in the jid buffer window | 3340 // Set the attention flag unless we're already in the jid buffer window |
3355 current_id = NULL; | 3367 current_id = NULL; |
3356 } | 3368 } |
3357 | 3369 |
3358 if (!chatmode || !current_id || strcmp(bjid, current_id) || iscurrentlocked) { | 3370 if (!chatmode || !current_id || strcmp(bjid, current_id) || iscurrentlocked) { |
3359 roster_setuiprio(bjid, special, value, action); | 3371 roster_setuiprio(bjid, special, value, action); |
3360 update_roster = TRUE; | 3372 scr_update_roster(); |
3361 } | 3373 } |
3362 } | 3374 } |
3363 | 3375 |
3364 // scr_set_multimode() | 3376 // scr_set_multimode() |
3365 // Public function to (un)set multimode... | 3377 // Public function to (un)set multimode... |