Mercurial > pidgin
changeset 26483:23b0a0723936
propagate from branch 'im.pidgin.pidgin' (head a59a573e3b9b2eb42ff728ba9ff56095f5c9e0d0)
to branch 'im.pidgin.cpw.darkrain42.xmpp.iq-handlers' (head 0799a27c10407559c5289c971bedee02a60d701a)
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 05 Apr 2009 20:52:06 +0000 |
parents | 457dca546b23 (current diff) f630747a813d (diff) |
children | 6a6984e95381 |
files | |
diffstat | 19 files changed, 103 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Sun Apr 05 19:25:45 2009 +0000 +++ b/COPYRIGHT Sun Apr 05 20:52:06 2009 +0000 @@ -19,6 +19,7 @@ Christopher Ayoup Alex Badea John Bailey +Arunan Balasubramaniam R. Tyler Ballance Chris Banal Luca Barbato
--- a/ChangeLog Sun Apr 05 19:25:45 2009 +0000 +++ b/ChangeLog Sun Apr 05 20:52:06 2009 +0000 @@ -35,6 +35,10 @@ * The New Account dialog is now broken into three tabs. Proxy configuration has been moved from the Advanced tab to the new tab. + Finch: + * The hardware cursor is updated correctly. This will be useful + especially for users of braille terminals, screen readers etc. + version 2.5.5 (03/01/2009): libpurple: * Fix a crash when removing an account with an unknown protocol id.
--- a/configure.ac Sun Apr 05 19:25:45 2009 +0000 +++ b/configure.ac Sun Apr 05 20:52:06 2009 +0000 @@ -788,12 +788,19 @@ dnl ####################################################################### AC_ARG_ENABLE(vv, [AC_HELP_STRING([--disable-vv], [compile without voice and video support])], - enable_vv="$enableval", enable_vv="yes") + [enable_vv="$enableval" force_vv=$enableval], [enable_vv="yes" enable_vv=no]) if test "x$enable_vv" != "xno"; then if test "x$enable_farsight" != "xno" -a "x$enable_gstprops" != "xno"; then AC_DEFINE(USE_VV, 1, [Use voice and video]) else enable_vv="no" + if test "x$force_vv" = "xyes"; then + AC_MSG_ERROR([ + +Dependencies for voice/video were not met. Install the necessary gstreamer and farsight packages first. + + ]) + fi fi fi
--- a/doc/finch.1.in Sun Apr 05 19:25:45 2009 +0000 +++ b/doc/finch.1.in Sun Apr 05 20:52:06 2009 +0000 @@ -59,7 +59,7 @@ Display the version information window. .SH GNT Shortcuts -You can use the following shortcuts: +You can use the following shortcuts (see the "\*QWidget Actions\*U" section for a more complete list): .TP .B Alt \+ a Bring up a list of available actions. You can use this list to access the @@ -378,6 +378,8 @@ [GntWidget::binding] .br f11 = context-menu +.br +c-x = context-menu [GntWindow::binding] .br
--- a/finch/gntblist.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/gntblist.c Sun Apr 05 20:52:06 2009 +0000 @@ -61,7 +61,7 @@ #include <string.h> #define PREF_ROOT "/finch/blist" -#define TYPING_TIMEOUT 4000 +#define TYPING_TIMEOUT_S 4 #define SHOW_EMPTY_GROUP_TIMEOUT 60 @@ -2016,7 +2016,7 @@ } if (ggblist->typing) - g_source_remove(ggblist->typing); + purple_timeout_remove(ggblist->typing); remove_peripherals(ggblist); if (ggblist->tagged) g_list_free(ggblist->tagged); @@ -2253,7 +2253,7 @@ end: g_free(escnewmessage); if (ggblist->typing) - g_source_remove(ggblist->typing); + purple_timeout_remove(ggblist->typing); ggblist->typing = 0; return FALSE; } @@ -2272,7 +2272,7 @@ /* Move the focus to the entry box */ /* XXX: Make sure the selected status can have a message */ gnt_box_move_focus(GNT_BOX(ggblist->window), 1); - ggblist->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, NULL); + ggblist->typing = purple_timeout_add_seconds(TYPING_TIMEOUT_S, (GSourceFunc)remove_typing_cb, NULL); } else if (now->type == STATUS_SAVED_ALL) { @@ -2298,7 +2298,7 @@ return FALSE; if (ggblist->typing) - g_source_remove(ggblist->typing); + purple_timeout_remove(ggblist->typing); ggblist->typing = 0; if (text[0] == '\r' && text[1] == 0) @@ -2308,7 +2308,7 @@ return TRUE; } - ggblist->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, NULL); + ggblist->typing = purple_timeout_add_seconds(TYPING_TIMEOUT_S, (GSourceFunc)remove_typing_cb, NULL); return FALSE; }
--- a/finch/libgnt/gnt.h Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gnt.h Sun Apr 05 20:52:06 2009 +0000 @@ -48,6 +48,10 @@ #define G_PARAM_STATIC_BLURB G_PARAM_PRIVATE #endif +#if !GLIB_CHECK_VERSION(2,14,0) + #define g_timeout_add_seconds(time, callback, data) g_timeout_add(time * 1000, callback, data) +#endif + /** * Initialize GNT. */
--- a/finch/libgnt/gntbox.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gntbox.c Sun Apr 05 20:52:06 2009 +0000 @@ -78,13 +78,11 @@ g_list_foreach(box->list, (GFunc)gnt_widget_draw, NULL); - gnt_box_sync_children(box); - if (box->title && !GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) { int pos, right; char *title = g_strdup(box->title); - + get_title_thingies(box, title, &pos, &right); if (gnt_widget_has_focus(widget)) @@ -96,8 +94,8 @@ mvwaddch(widget->window, 0, right, ACS_LTEE | gnt_color_pair(GNT_COLOR_NORMAL)); g_free(title); } - - GNTDEBUG; + + gnt_box_sync_children(box); } static void @@ -723,6 +721,9 @@ if (GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_NO_BORDER)) pos = 0; + if (!box->active) + find_focusable_widget(box); + for (iter = box->list; iter; iter = iter->next) { GntWidget *w = GNT_WIDGET(iter->data); @@ -764,6 +765,9 @@ copywin(w->window, widget->window, 0, 0, y, x, y + height - 1, x + width - 1, FALSE); gnt_widget_set_position(w, x + widget->priv.x, y + widget->priv.y); + if (w == box->active) { + wmove(widget->window, y + getcury(w->window), x + getcurx(w->window)); + } } }
--- a/finch/libgnt/gntcheckbox.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gntcheckbox.c Sun Apr 05 20:52:06 2009 +0000 @@ -42,7 +42,7 @@ type = GNT_COLOR_HIGHLIGHT; else type = GNT_COLOR_NORMAL; - + wbkgdset(widget->window, '\0' | gnt_color_pair(type)); text = g_strdup_printf("[%c]", cb->checked ? 'X' : ' '); @@ -51,7 +51,8 @@ wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_NORMAL)); mvwaddstr(widget->window, 0, 4, GNT_BUTTON(cb)->priv->text); - + wmove(widget->window, 0, 1); + GNTDEBUG; }
--- a/finch/libgnt/gntcombobox.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gntcombobox.c Sun Apr 05 20:52:06 2009 +0000 @@ -73,7 +73,7 @@ char *text = NULL, *s; GntColorType type; int len; - + if (box->dropdown && box->selected) text = gnt_tree_get_selection_text(GNT_TREE(box->dropdown)); @@ -94,6 +94,7 @@ whline(widget->window, ' ' | gnt_color_pair(type), widget->priv.width - 4 - len); mvwaddch(widget->window, 1, widget->priv.width - 3, ACS_VLINE | gnt_color_pair(GNT_COLOR_NORMAL)); mvwaddch(widget->window, 1, widget->priv.width - 2, ACS_DARROW | gnt_color_pair(GNT_COLOR_NORMAL)); + wmove(widget->window, 1, 1); g_free(text); GNTDEBUG;
--- a/finch/libgnt/gntentry.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gntentry.c Sun Apr 05 20:52:06 2009 +0000 @@ -271,6 +271,7 @@ GntEntry *entry = GNT_ENTRY(widget); int stop; gboolean focus; + int curpos; if ((focus = gnt_widget_has_focus(widget))) wbkgdset(widget->window, '\0' | gnt_color_pair(GNT_COLOR_TEXT_NORMAL)); @@ -289,9 +290,10 @@ if (stop < widget->priv.width) mvwhline(widget->window, 0, stop, ENTRY_CHAR, widget->priv.width - stop); + curpos = gnt_util_onscreen_width(entry->scroll, entry->cursor); if (focus) - mvwchgat(widget->window, 0, gnt_util_onscreen_width(entry->scroll, entry->cursor), - 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL); + mvwchgat(widget->window, 0, curpos, 1, A_REVERSE, GNT_COLOR_TEXT_NORMAL, NULL); + wmove(widget->window, 0, curpos); GNTDEBUG; }
--- a/finch/libgnt/gnttextview.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gnttextview.c Sun Apr 05 20:52:06 2009 +0000 @@ -177,7 +177,7 @@ gnt_color_pair(GNT_COLOR_HIGHLIGHT_D)); } - GNTDEBUG; + wmove(widget->window, 0, 0); } static void
--- a/finch/libgnt/gnttree.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gnttree.c Sun Apr 05 20:52:06 2009 +0000 @@ -28,7 +28,7 @@ #include <string.h> #include <ctype.h> -#define SEARCH_TIMEOUT 4000 /* 4 secs */ +#define SEARCH_TIMEOUT_S 4 /* 4 secs */ #define SEARCHING(tree) (tree->priv->search && tree->priv->search->len > 0) #define COLUMN_INVISIBLE(tree, index) (tree->columns[index].flags & GNT_TREE_COLUMN_INVISIBLE) @@ -420,6 +420,7 @@ GntTreeRow *row; int pos, up, down = 0; int rows, scrcol; + int current = 0; if (!GNT_WIDGET_IS_FLAG_SET(GNT_WIDGET(tree), GNT_WIDGET_MAPPED)) return; @@ -518,6 +519,7 @@ if (row == tree->current) { + current = i; attr |= A_BOLD; if (gnt_widget_has_focus(widget)) attr |= gnt_color_pair(GNT_COLOR_HIGHLIGHT); @@ -606,6 +608,7 @@ mvwaddnstr(widget->window, widget->priv.height - pos - 1, pos, tree->priv->search->str, str - tree->priv->search->str); } + wmove(widget->window, current, pos); gnt_widget_queue_update(widget); } @@ -818,7 +821,7 @@ gnt_bindable_perform_action_key(GNT_BINDABLE(tree), text); } g_source_remove(tree->priv->search_timeout); - tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree); + tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree); return TRUE; } else if (text[0] == ' ' && text[1] == 0) { /* Space pressed */ @@ -930,7 +933,7 @@ return FALSE; GNT_WIDGET_SET_FLAGS(GNT_WIDGET(tree), GNT_WIDGET_DISABLE_ACTIONS); tree->priv->search = g_string_new(NULL); - tree->priv->search_timeout = g_timeout_add(SEARCH_TIMEOUT, search_timeout, tree); + tree->priv->search_timeout = g_timeout_add_seconds(SEARCH_TIMEOUT_S, search_timeout, tree); return TRUE; }
--- a/finch/libgnt/gntwm.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/libgnt/gntwm.c Sun Apr 05 20:52:06 2009 +0000 @@ -135,6 +135,17 @@ src = widget->window; dst = node->window; copywin(src, dst, node->scroll, 0, 0, 0, getmaxy(dst) - 1, getmaxx(dst) - 1, 0); + + /* Update the hardware cursor */ + if (GNT_IS_WINDOW(widget) || GNT_IS_BOX(widget)) { + GntWidget *active = GNT_BOX(widget)->active; + if (active) { + int curx = active->priv.x + getcurx(active->window); + int cury = active->priv.y + getcury(active->window); + if (wmove(node->window, cury - widget->priv.y, curx - widget->priv.x) != OK) + wmove(node->window, 0, 0); + } + } } /** @@ -397,7 +408,7 @@ wm->positions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); if (gnt_style_get_bool(GNT_STYLE_REMPOS, TRUE)) read_window_positions(wm); - g_timeout_add(IDLE_CHECK_INTERVAL * 1000, check_idle, NULL); + g_timeout_add_seconds(IDLE_CHECK_INTERVAL, check_idle, NULL); time(&last_active_time); gnt_wm_switch_workspace(wm, 0); } @@ -1101,8 +1112,8 @@ g_hash_table_foreach(wm->nodes, (GHFunc)refresh_node, GINT_TO_POINTER(TRUE)); g_signal_emit(wm, signals[SIG_TERMINAL_REFRESH], 0); + gnt_ws_draw_taskbar(wm->cws, TRUE); update_screen(wm); - gnt_ws_draw_taskbar(wm->cws, TRUE); curs_set(0); /* endwin resets the cursor to normal */ return TRUE; @@ -1872,8 +1883,8 @@ } } + gnt_ws_draw_taskbar(wm->cws, FALSE); update_screen(wm); - gnt_ws_draw_taskbar(wm->cws, FALSE); } void gnt_wm_window_decorate(GntWM *wm, GntWidget *widget) @@ -1885,6 +1896,7 @@ { GntWS *s; int pos; + gboolean transient = !!GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT); s = gnt_wm_widget_find_workspace(wm, widget); @@ -1908,10 +1920,12 @@ if (s->ordered && wm->cws == s) gnt_wm_raise_window(wm, s->ordered->data); } + } else if (transient && wm->cws && wm->cws->ordered) { + gnt_wm_update_window(wm, wm->cws->ordered->data); } + gnt_ws_draw_taskbar(wm->cws, FALSE); update_screen(wm); - gnt_ws_draw_taskbar(wm->cws, FALSE); } time_t gnt_wm_get_idle_time() @@ -2119,7 +2133,7 @@ if (write_timeout) { g_source_remove(write_timeout); } - write_timeout = g_timeout_add(10000, write_already, wm); + write_timeout = g_timeout_add_seconds(10, write_already, wm); } void gnt_wm_move_window(GntWM *wm, GntWidget *widget, int x, int y) @@ -2181,8 +2195,8 @@ GntNode *nd = g_hash_table_lookup(wm->nodes, wm->_list.window); top_panel(nd->panel); } + gnt_ws_draw_taskbar(wm->cws, FALSE); update_screen(wm); - gnt_ws_draw_taskbar(wm->cws, FALSE); } void gnt_wm_update_window(GntWM *wm, GntWidget *widget) @@ -2207,8 +2221,8 @@ if (ws == wm->cws || GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_TRANSIENT)) { gnt_wm_copy_win(widget, node); + gnt_ws_draw_taskbar(wm->cws, FALSE); update_screen(wm); - gnt_ws_draw_taskbar(wm->cws, FALSE); } else if (ws && ws != wm->cws && GNT_WIDGET_IS_FLAG_SET(widget, GNT_WIDGET_URGENT)) { if (!act || (act && !g_list_find(act, ws))) act = g_list_prepend(act, ws);
--- a/finch/plugins/gntgf.c Sun Apr 05 19:25:45 2009 +0000 +++ b/finch/plugins/gntgf.c Sun Apr 05 20:52:06 2009 +0000 @@ -47,6 +47,7 @@ #include <blist.h> #include <conversation.h> #include <debug.h> +#include <eventloop.h> #include <util.h> #include <gnt.h> @@ -75,7 +76,7 @@ { toasters = g_list_remove(toasters, toast); gnt_widget_destroy(toast->window); - g_source_remove(toast->timer); + purple_timeout_remove(toast->timer); g_free(toast); } @@ -220,7 +221,7 @@ } gnt_widget_draw(window); - toast->timer = g_timeout_add(4000, (GSourceFunc)remove_toaster, toast); + toast->timer = purple_timeout_add_seconds(4, (GSourceFunc)remove_toaster, toast); toasters = g_list_prepend(toasters, toast); }
--- a/libpurple/media-gst.h Sun Apr 05 19:25:45 2009 +0000 +++ b/libpurple/media-gst.h Sun Apr 05 20:52:06 2009 +0000 @@ -24,8 +24,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __MEDIA_GST_H_ -#define __MEDIA_GST_H_ +#ifndef _PURPLE_MEDIA_GST_H_ +#define _PURPLE_MEDIA_GST_H_ #include "media.h" #include "mediamanager.h" @@ -170,4 +170,4 @@ G_END_DECLS -#endif /* __MEDIA_GST_H_ */ +#endif /* _PURPLE_MEDIA_GST_H_ */
--- a/libpurple/media.h Sun Apr 05 19:25:45 2009 +0000 +++ b/libpurple/media.h Sun Apr 05 20:52:06 2009 +0000 @@ -24,11 +24,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __MEDIA_H_ -#define __MEDIA_H_ - -#include "signals.h" -#include "util.h" +#ifndef _PURPLE_MEDIA_H_ +#define _PURPLE_MEDIA_H_ #include <glib.h> #include <glib-object.h> @@ -129,6 +126,9 @@ PURPLE_MEDIA_NETWORK_PROTOCOL_TCP, } PurpleMediaNetworkProtocol; +#include "signals.h" +#include "util.h" + #ifdef __cplusplus extern "C" { #endif @@ -685,4 +685,4 @@ G_END_DECLS -#endif /* __MEDIA_H_ */ +#endif /* _PURPLE_MEDIA_H_ */
--- a/libpurple/mediamanager.h Sun Apr 05 19:25:45 2009 +0000 +++ b/libpurple/mediamanager.h Sun Apr 05 20:52:06 2009 +0000 @@ -24,12 +24,17 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef __MEDIA_MANAGER_H_ -#define __MEDIA_MANAGER_H_ +#ifndef _PURPLE_MEDIA_MANAGER_H_ +#define _PURPLE_MEDIA_MANAGER_H_ #include <glib.h> #include <glib-object.h> +/** @copydoc _PurpleMediaManager */ +typedef struct _PurpleMediaManager PurpleMediaManager; +/** @copydoc _PurpleMediaManagerClass */ +typedef struct _PurpleMediaManagerClass PurpleMediaManagerClass; + #include "connection.h" #include "media.h" @@ -42,11 +47,6 @@ #define PURPLE_IS_MEDIA_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_MEDIA_MANAGER)) #define PURPLE_MEDIA_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_MEDIA_MANAGER, PurpleMediaManagerClass)) -/** @copydoc _PurpleMediaManager */ -typedef struct _PurpleMediaManager PurpleMediaManager; -/** @copydoc _PurpleMediaManagerClass */ -typedef struct _PurpleMediaManagerClass PurpleMediaManagerClass; - #ifdef __cplusplus extern "C" { #endif @@ -220,4 +220,4 @@ G_END_DECLS -#endif /* __MEDIA_MANAGER_H_ */ +#endif /* _PURPLE_MEDIA_MANAGER_H_ */
--- a/libpurple/util.h Sun Apr 05 19:25:45 2009 +0000 +++ b/libpurple/util.h Sun Apr 05 20:52:06 2009 +0000 @@ -31,23 +31,26 @@ #include <stdio.h> +typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData; +typedef struct _PurpleMenuAction PurpleMenuAction; +typedef struct _PurpleKeyValuePair PurpleKeyValuePair; + #include "account.h" #include "xmlnode.h" #include "notify.h" + #ifdef __cplusplus extern "C" { #endif -typedef struct _PurpleUtilFetchUrlData PurpleUtilFetchUrlData; - -typedef struct _PurpleMenuAction +struct _PurpleMenuAction { char *label; PurpleCallback callback; gpointer data; GList *children; -} PurpleMenuAction; +}; typedef char *(*PurpleInfoFieldFormatCallback)(const char *field, size_t len); @@ -57,12 +60,12 @@ * This is used by, among other things, purple_gtk_combo* functions to pass in a * list of key-value pairs so it can display a user-friendly value. */ -typedef struct _PurpleKeyValuePair +struct _PurpleKeyValuePair { gchar *key; void *value; -} PurpleKeyValuePair; +}; /** * Creates a new PurpleMenuAction.
--- a/pidgin/gtkimhtml.c Sun Apr 05 19:25:45 2009 +0000 +++ b/pidgin/gtkimhtml.c Sun Apr 05 20:52:06 2009 +0000 @@ -3320,7 +3320,8 @@ pos++; } else if ((pos == 0 || wpos == 0 || isspace(*(c - 1))) && (len_protocol = gtk_imhtml_is_protocol(c)) > 0 && - c[len_protocol] && !isspace(c[len_protocol])) { + c[len_protocol] && !isspace(c[len_protocol]) && + (c[len_protocol] != '<' || !gtk_imhtml_is_tag(c + 1, NULL, NULL, NULL))) { br = FALSE; if (wpos > 0) { gtk_text_buffer_insert(imhtml->text_buffer, iter, ws, wpos);