# HG changeset patch # User Richard Laager # Date 1183233193 0 # Node ID 73554fed2f1fe358aad0a82c68b0d57fddc58b06 # Parent d1e7c8015308fa103ab0ce6dae8106e732db0cf4# Parent 743ff8e14b1775b76344d81525eb196bd29e4184 propagate from branch 'im.pidgin.pidgin' (head b34743e0bab991600b435760c67a34c881d018ff) to branch 'im.pidgin.soc.2007.remotelogging' (head 2ac7304159dedccba63b0327ce194fc750932500) diff -r d1e7c8015308 -r 73554fed2f1f finch/finch.c --- a/finch/finch.c Fri Jun 29 18:56:56 2007 +0000 +++ b/finch/finch.c Sat Jun 30 19:53:13 2007 +0000 @@ -381,6 +381,7 @@ { signal(SIGPIPE, SIG_IGN); + g_set_prgname("Finch"); g_set_application_name(_("Finch")); /* Initialize the libpurple stuff */ diff -r d1e7c8015308 -r 73554fed2f1f finch/libgnt/gntstyle.c --- a/finch/libgnt/gntstyle.c Fri Jun 29 18:56:56 2007 +0000 +++ b/finch/libgnt/gntstyle.c Sat Jun 30 19:53:13 2007 +0000 @@ -269,7 +269,8 @@ { GError *error = NULL; gsize nkeys; - char **keys = g_key_file_get_keys(kfile, "general", &nkeys, &error); + const char *prgname = g_get_prgname(); + char **keys = NULL; int i; struct { @@ -282,6 +283,14 @@ {"remember_position", GNT_STYLE_REMPOS}, {NULL, 0}}; + if (prgname && *prgname) + keys = g_key_file_get_keys(kfile, prgname, &nkeys, NULL); + + if (keys == NULL) { + prgname = "general"; + keys = g_key_file_get_keys(kfile, prgname, &nkeys, &error); + } + if (error) { g_printerr("GntStyle: %s\n", error->message); @@ -292,7 +301,7 @@ for (i = 0; styles[i].style; i++) { str_styles[styles[i].en] = - g_key_file_get_string(kfile, "general", styles[i].style, NULL); + g_key_file_get_string(kfile, prgname, styles[i].style, NULL); } } g_strfreev(keys); diff -r d1e7c8015308 -r 73554fed2f1f finch/libgnt/gntwm.c --- a/finch/libgnt/gntwm.c Fri Jun 29 18:56:56 2007 +0000 +++ b/finch/libgnt/gntwm.c Sat Jun 30 19:53:13 2007 +0000 @@ -61,6 +61,7 @@ SIG_GIVE_FOCUS, SIG_KEY_PRESS, SIG_MOUSE_CLICK, + SIG_TERMINAL_REFRESH, SIGS }; @@ -1031,6 +1032,8 @@ endwin(); g_hash_table_foreach(wm->nodes, (GHFunc)refresh_node, NULL); + refresh(); + g_signal_emit(wm, signals[SIG_TERMINAL_REFRESH], 0); update_screen(wm); gnt_ws_draw_taskbar(wm->cws, TRUE); curs_set(0); /* endwin resets the cursor to normal */ @@ -1238,6 +1241,15 @@ gnt_closure_marshal_BOOLEAN__INT_INT_INT_POINTER, G_TYPE_BOOLEAN, 4, G_TYPE_INT, G_TYPE_INT, G_TYPE_INT, G_TYPE_POINTER); + signals[SIG_TERMINAL_REFRESH] = + g_signal_new("terminal-refresh", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(GntWMClass, terminal_refresh), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + gnt_bindable_class_register_action(GNT_BINDABLE_CLASS(klass), "window-next", window_next, "\033" "n", NULL); gnt_bindable_class_register_action(GNT_BINDABLE_CLASS(klass), "window-prev", window_prev, diff -r d1e7c8015308 -r 73554fed2f1f finch/libgnt/gntwm.h --- a/finch/libgnt/gntwm.h Fri Jun 29 18:56:56 2007 +0000 +++ b/finch/libgnt/gntwm.h Sat Jun 30 19:53:13 2007 +0000 @@ -169,10 +169,15 @@ */ /*GList *(*window_list)();*/ + /* This is invoked whenever the terminal window is resized, or the + * screen session is attached to a new terminal. (ie, from the + * SIGWINCH callback) + */ + void (*terminal_refresh)(GntWM *wm); + void (*res1)(void); void (*res2)(void); void (*res3)(void); - void (*res4)(void); }; G_BEGIN_DECLS diff -r d1e7c8015308 -r 73554fed2f1f finch/libgnt/wms/irssi.c --- a/finch/libgnt/wms/irssi.c Fri Jun 29 18:56:56 2007 +0000 +++ b/finch/libgnt/wms/irssi.c Sat Jun 30 19:53:13 2007 +0000 @@ -248,6 +248,12 @@ } static void +irssi_terminal_refresh(GntWM *wm) +{ + draw_line_separators((Irssi*)wm); +} + +static void irssi_class_init(IrssiClass *klass) { GntWMClass *pclass = GNT_WM_CLASS(klass); @@ -258,6 +264,7 @@ pclass->window_resized = irssi_window_resized; pclass->close_window = irssi_close_window; pclass->window_update = irssi_update_window; + pclass->terminal_refresh = irssi_terminal_refresh; gnt_bindable_class_register_action(GNT_BINDABLE_CLASS(klass), "move-up", move_direction, "\033" "K", GINT_TO_POINTER('k'), NULL); diff -r d1e7c8015308 -r 73554fed2f1f libpurple/protocols/yahoo/yahoochat.c --- a/libpurple/protocols/yahoo/yahoochat.c Fri Jun 29 18:56:56 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoochat.c Sat Jun 30 19:53:13 2007 +0000 @@ -785,44 +785,6 @@ g_free(eroom); } -/* borrowed from gtkconv.c */ -static gboolean -meify(char *message, size_t len) -{ - /* - * Read /me-ify: If the message (post-HTML) starts with /me, - * remove the "/me " part of it (including that space) and return TRUE. - */ - char *c; - gboolean inside_html = 0; - - /* Umm.. this would be very bad if this happens. */ - g_return_val_if_fail(message != NULL, FALSE); - - if (len == -1) - len = strlen(message); - - for (c = message; *c != '\0'; c++, len--) { - if (inside_html) { - if (*c == '>') - inside_html = FALSE; - } - else { - if (*c == '<') - inside_html = TRUE; - else - break; - } - } - - if (*c != '\0' && !g_ascii_strncasecmp(c, "/me ", 4)) { - memmove(c, c + 4, len - 3); - return TRUE; - } - - return FALSE; -} - static int yahoo_chat_send(PurpleConnection *gc, const char *dn, const char *room, const char *what, PurpleMessageFlags flags) { struct yahoo_data *yd = gc->proto_data; @@ -839,7 +801,7 @@ msg1 = g_strdup(what); - if (meify(msg1, -1)) + if (purple_message_meify(msg1, -1)) me = 1; msg2 = yahoo_html_to_codes(msg1); diff -r d1e7c8015308 -r 73554fed2f1f libpurple/tests/check_libpurple.c --- a/libpurple/tests/check_libpurple.c Fri Jun 29 18:56:56 2007 +0000 +++ b/libpurple/tests/check_libpurple.c Sat Jun 30 19:53:13 2007 +0000 @@ -20,9 +20,17 @@ static PurpleEventLoopUiOps eventloop_ui_ops = { g_timeout_add, - (guint (*)(guint))g_source_remove, + g_source_remove, purple_check_input_add, - (guint (*)(guint))g_source_remove, + g_source_remove, + NULL, /* input_get_error */ +#if GLIB_CHECK_VERSION(2,14,0) + g_timeout_add_seconds, +#else + NULL, +#endif + NULL, + NULL, NULL }; diff -r d1e7c8015308 -r 73554fed2f1f libpurple/util.h --- a/libpurple/util.h Fri Jun 29 18:56:56 2007 +0000 +++ b/libpurple/util.h Sat Jun 30 19:53:13 2007 +0000 @@ -1105,12 +1105,13 @@ void purple_print_utf8_to_console(FILE *filestream, char *message); /** - * Checks for messages starting with "/me " + * Checks for messages starting (post-HTML) with "/me ", including the space. * * @param message The message to check * @param len The message length, or -1 * - * @return TRUE if it starts with /me, and it has been removed, otherwise FALSE + * @return TRUE if it starts with "/me ", and it has been removed, otherwise + * FALSE */ gboolean purple_message_meify(char *message, size_t len); diff -r d1e7c8015308 -r 73554fed2f1f pidgin/gtkconv.c --- a/pidgin/gtkconv.c Fri Jun 29 18:56:56 2007 +0000 +++ b/pidgin/gtkconv.c Sat Jun 30 19:53:13 2007 +0000 @@ -2406,9 +2406,6 @@ return FALSE; } - gtkconv->auto_resize = TRUE; - g_idle_add(reset_auto_resize_cb, gtkconv); - gdk_pixbuf_animation_iter_advance(gtkconv->u.im->iter, NULL); buf = gdk_pixbuf_animation_iter_get_pixbuf(gtkconv->u.im->iter); @@ -4256,7 +4253,7 @@ if (sr.height < height + PIDGIN_HIG_BOX_SPACE) { gtkconv->auto_resize = TRUE; gtkconv->entry_growing = TRUE; - gtk_widget_set_size_request(gtkconv->lower_hbox, -1, height + PIDGIN_HIG_BOX_SPACE); + gtk_widget_set_size_request(gtkconv->entry, -1, height); g_idle_add(reset_auto_resize_cb, gtkconv); } } diff -r d1e7c8015308 -r 73554fed2f1f pidgin/gtkutils.c --- a/pidgin/gtkutils.c Fri Jun 29 18:56:56 2007 +0000 +++ b/pidgin/gtkutils.c Sat Jun 30 19:53:13 2007 +0000 @@ -176,7 +176,7 @@ sw = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), - GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); gtk_widget_show(sw);