You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(106) |
Oct
(334) |
Nov
(246) |
Dec
(145) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(42) |
Feb
(53) |
Mar
(232) |
Apr
(109) |
May
(137) |
Jun
(63) |
Jul
(26) |
Aug
(263) |
Sep
(193) |
Oct
(507) |
Nov
(440) |
Dec
(241) |
2003 |
Jan
(567) |
Feb
(195) |
Mar
(504) |
Apr
(481) |
May
(524) |
Jun
(522) |
Jul
(594) |
Aug
(502) |
Sep
(643) |
Oct
(508) |
Nov
(430) |
Dec
(377) |
2004 |
Jan
(361) |
Feb
(251) |
Mar
(219) |
Apr
(499) |
May
(461) |
Jun
(419) |
Jul
(314) |
Aug
(519) |
Sep
(416) |
Oct
(247) |
Nov
(305) |
Dec
(382) |
2005 |
Jan
(267) |
Feb
(282) |
Mar
(327) |
Apr
(338) |
May
(189) |
Jun
(400) |
Jul
(462) |
Aug
(530) |
Sep
(316) |
Oct
(523) |
Nov
(481) |
Dec
(650) |
2006 |
Jan
(536) |
Feb
(361) |
Mar
(287) |
Apr
(146) |
May
(101) |
Jun
(169) |
Jul
(221) |
Aug
(498) |
Sep
(300) |
Oct
(236) |
Nov
(209) |
Dec
(205) |
2007 |
Jan
(30) |
Feb
(23) |
Mar
(26) |
Apr
(15) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <dat...@us...> - 2006-11-28 06:37:12
|
Revision: 17833 http://svn.sourceforge.net/gaim/?rev=17833&view=rev Author: datallah Date: 2006-11-27 22:37:12 -0800 (Mon, 27 Nov 2006) Log Message: ----------- Fix "Paste" and "Paste as Plain Text" from the imhtml on win32. This was apparently broken by gtk changing how the clipboard is handled internally. This is a much cleaner way to do this anyway. I should probably check if it works on GTK+ 2.6.10. Modified Paths: -------------- trunk/gtk/gtkimhtml.c Modified: trunk/gtk/gtkimhtml.c =================================================================== --- trunk/gtk/gtkimhtml.c 2006-11-28 00:15:31 UTC (rev 17832) +++ trunk/gtk/gtkimhtml.c 2006-11-28 06:37:12 UTC (rev 17833) @@ -142,7 +142,11 @@ static guint signals [LAST_SIGNAL] = { 0 }; static GtkTargetEntry selection_targets[] = { +#ifndef _WIN32 { "text/html", 0, TARGET_HTML }, +#else + { "HTML Format", 0, TARGET_HTML }, +#endif { "UTF8_STRING", 0, TARGET_UTF8_STRING }, { "COMPOUND_TEXT", 0, TARGET_COMPOUND_TEXT }, { "STRING", 0, TARGET_STRING }, @@ -153,11 +157,6 @@ }; #ifdef _WIN32 -/* Win32 clipboard format value, and functions to convert back and - * forth between HTML and the clipboard format. - */ -static UINT win_html_fmt; - static gchar * clipboard_win32_to_html(char *clipboard) { const char *header; @@ -241,38 +240,18 @@ return g_string_free(clipboard, FALSE); } -static void clipboard_copy_html_win32(GtkIMHtml *imhtml) { - gchar *clipboard = clipboard_html_to_win32(imhtml->clipboard_html_string); - if (clipboard != NULL) { - HWND hwnd = GDK_WINDOW_HWND(GTK_WIDGET(imhtml)->window); - if (OpenClipboard(hwnd)) { - if (EmptyClipboard()) { - gint length = strlen(clipboard); - HGLOBAL hdata = GlobalAlloc(GMEM_MOVEABLE, length); - if (hdata != NULL) { - gchar *buffer = GlobalLock(hdata); - memcpy(buffer, clipboard, length); - GlobalUnlock(hdata); - - if (SetClipboardData(win_html_fmt, hdata) == NULL) { - gchar *err_msg = - g_win32_error_message(GetLastError()); - gaim_debug_info("html clipboard", - "Unable to set clipboard data: %s\n", - err_msg ? err_msg : "Unknown Error"); - g_free(err_msg); - } - } - } - CloseClipboard(); - } - g_free(clipboard); - } -} - static gboolean clipboard_paste_html_win32(GtkIMHtml *imhtml) { gboolean pasted = FALSE; + /* Win32 clipboard format value, and functions to convert back and + * forth between HTML and the clipboard format. + */ + static UINT win_html_fmt = 0; + + /* Register HTML Format as desired clipboard format */ + if (!win_html_fmt) + win_html_fmt = RegisterClipboardFormat("HTML Format"); + if (gtk_text_view_get_editable(GTK_TEXT_VIEW(imhtml)) && IsClipboardFormatAvailable(win_html_fmt)) { gboolean error_reading_clipboard = FALSE; @@ -281,7 +260,8 @@ if (OpenClipboard(hwnd)) { HGLOBAL hdata = GetClipboardData(win_html_fmt); if (hdata == NULL) { - error_reading_clipboard = TRUE; + if (GetLastError() != ERROR_SUCCESS) + error_reading_clipboard = TRUE; } else { char *buffer = GlobalLock(hdata); if (buffer == NULL) { @@ -298,7 +278,6 @@ } CloseClipboard(); - } else { error_reading_clipboard = TRUE; } @@ -892,7 +871,7 @@ static void gtk_imhtml_clipboard_get(GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info, GtkIMHtml *imhtml) { - char *text; + char *text = NULL; gboolean primary; GtkTextIter start, end; GtkTextMark *sel = gtk_text_buffer_get_selection_bound(imhtml->text_buffer); @@ -903,8 +882,9 @@ primary = gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_PRIMARY) == clipboard; if (info == TARGET_HTML) { - gsize len; char *selection; +#ifndef _WIN32 + gsize len; GString *str = g_string_new(NULL); if (primary) { text = gtk_imhtml_get_markup_range(imhtml, &start, &end); @@ -918,6 +898,10 @@ selection = g_convert(str->str, str->len, "UCS-2", "UTF-8", NULL, &len, NULL); gtk_selection_data_set(selection_data, gdk_atom_intern("text/html", FALSE), 16, (const guchar *)selection, len); g_string_free(str, TRUE); +#else + selection = clipboard_html_to_win32(imhtml->clipboard_html_string); + gtk_selection_data_set(selection_data, gdk_atom_intern("HTML Format", FALSE), 8, (const guchar *)selection, strlen(selection)); +#endif g_free(selection); } else { if (primary) { @@ -968,12 +952,6 @@ imhtml->clipboard_html_string = gtk_imhtml_get_markup_range(imhtml, &start, &end); imhtml->clipboard_text_string = gtk_imhtml_get_text(imhtml, &start, &end); -#ifdef _WIN32 - /* We're going to still copy plain text, but let's toss the "HTML Format" - we need into the windows clipboard now as well. */ - clipboard_copy_html_win32(imhtml); -#endif - g_signal_stop_emission_by_name(imhtml, "copy-clipboard"); } @@ -999,12 +977,6 @@ imhtml->clipboard_html_string = gtk_imhtml_get_markup_range(imhtml, &start, &end); imhtml->clipboard_text_string = gtk_imhtml_get_text(imhtml, &start, &end); -#ifdef _WIN32 - /* We're going to still copy plain text, but let's toss the "HTML Format" - we need into the windows clipboard now as well. */ - clipboard_copy_html_win32(imhtml); -#endif - if (imhtml->editable) gtk_text_buffer_delete_selection(imhtml->text_buffer, FALSE, FALSE); g_signal_stop_emission_by_name(imhtml, "cut-clipboard"); @@ -1431,11 +1403,6 @@ gtk_imhtml_set_editable(imhtml, FALSE); g_signal_connect(G_OBJECT(imhtml), "populate-popup", G_CALLBACK(hijack_menu_cb), NULL); - -#ifdef _WIN32 - /* Register HTML Format as desired clipboard format */ - win_html_fmt = RegisterClipboardFormat("HTML Format"); -#endif } GtkWidget *gtk_imhtml_new(void *a, void *b) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dat...@us...> - 2006-11-28 00:15:44
|
Revision: 17832 http://svn.sourceforge.net/gaim/?rev=17832&view=rev Author: datallah Date: 2006-11-27 16:15:31 -0800 (Mon, 27 Nov 2006) Log Message: ----------- Fix "Hide new IM conversations when away" to update the conv that gets show when you return. This makes the conv tab title, the "hidden" prpl icon overlay and the "hidden" blist indicator all update correctly. Modified Paths: -------------- trunk/gtk/gtkblist.c trunk/gtk/gtkconv.c Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-11-27 22:34:46 UTC (rev 17831) +++ trunk/gtk/gtkblist.c 2006-11-28 00:15:31 UTC (rev 17832) @@ -3424,17 +3424,18 @@ static GtkWidget *menu = NULL; GList *convs = NULL; - if (menu) + if (menu) { gtk_widget_destroy(menu); + menu = NULL; + } - menu = gtk_menu_new(); - convs = gaim_gtk_conversations_find_unseen_list(GAIM_CONV_TYPE_IM, GAIM_UNSEEN_TEXT, TRUE, 0); - if (!convs) { + if (!convs) /* no conversations added, don't show the menu */ - gtk_widget_destroy(menu); return; - } + + menu = gtk_menu_new(); + gaim_gtk_conversations_fill_menu(menu, convs); g_list_free(convs); gtk_widget_show_all(menu); Modified: trunk/gtk/gtkconv.c =================================================================== --- trunk/gtk/gtkconv.c 2006-11-27 22:34:46 UTC (rev 17831) +++ trunk/gtk/gtkconv.c 2006-11-28 00:15:31 UTC (rev 17832) @@ -74,9 +74,9 @@ { GAIM_GTKCONV_SET_TITLE = 1 << 0, GAIM_GTKCONV_BUDDY_ICON = 1 << 1, - GAIM_GTKCONV_MENU = 1 << 2, + GAIM_GTKCONV_MENU = 1 << 2, GAIM_GTKCONV_TAB_ICON = 1 << 3, - GAIM_GTKCONV_TOPIC = 1 << 4, + GAIM_GTKCONV_TOPIC = 1 << 4, GAIM_GTKCONV_SMILEY_THEME = 1 << 5, GAIM_GTKCONV_COLORIZE_TITLE = 1 << 6 }GaimGtkConvFields; @@ -6356,6 +6356,10 @@ gaim_gtk_conv_window_remove_gtkconv(hidden_convwin, gtkconv); gaim_gtkconv_placement_place(gtkconv); + + /* TODO: do we need to do anything for any other conversations that are in the same gtkconv here? + * I'm a little concerned that not doing so will cause the "pending" indicator in the gtkblist not to be cleared. -DAA*/ + gaim_conversation_update(conv, GAIM_CONV_UPDATE_UNSEEN); } } @@ -7180,7 +7184,7 @@ if (tab_clicked == -1) return FALSE; - + gtkconv = gaim_gtk_conv_window_get_gtkconv_at_index(win, tab_clicked); close_conv_cb(NULL, gtkconv); return TRUE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-27 22:34:49
|
Revision: 17831 http://svn.sourceforge.net/gaim/?rev=17831&view=rev Author: seanegan Date: 2006-11-27 14:34:46 -0800 (Mon, 27 Nov 2006) Log Message: ----------- - change "global proxy settings" to "GNOME proxy settings," when running GNOME - Make the docklet "click" event happen on mouse-up, rather than mouse-down (otherwise in "pending" mode, the mouse-up event will be sent to some other app, and it will think it's clicked. - Make Jabber not create a new dialog in response to closing a dialog. This is part of a larger change I'm working on to remove all authentication dialogs, and it just happened to be in this tree when I svn ci'ed, and I don't feel like reverting it ;) Modified Paths: -------------- trunk/gtk/gtkaccount.c trunk/gtk/gtkdocklet-x11.c trunk/libgaim/protocols/jabber/presence.c Modified: trunk/gtk/gtkaccount.c =================================================================== --- trunk/gtk/gtkaccount.c 2006-11-27 19:29:00 UTC (rev 17830) +++ trunk/gtk/gtkaccount.c 2006-11-27 22:34:46 UTC (rev 17831) @@ -865,7 +865,8 @@ gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, - 0, _("Use Global Proxy Settings"), + 0, gaim_running_gnome() ? _("Use GNOME Proxy Settings") + :_("Use Global Proxy Settings"), 1, GAIM_PROXY_USE_GLOBAL, -1); Modified: trunk/gtk/gtkdocklet-x11.c =================================================================== --- trunk/gtk/gtkdocklet-x11.c 2006-11-27 19:29:00 UTC (rev 17830) +++ trunk/gtk/gtkdocklet-x11.c 2006-11-27 22:34:46 UTC (rev 17831) @@ -78,7 +78,7 @@ static void docklet_x11_clicked_cb(GtkWidget *button, GdkEventButton *event, void *data) { - if (event->type != GDK_BUTTON_PRESS) + if (event->type != GDK_BUTTON_RELEASE) return; gaim_gtk_docklet_clicked(event->button); @@ -260,7 +260,7 @@ g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(docklet_x11_embedded_cb), NULL); g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(docklet_x11_destroyed_cb), NULL); - g_signal_connect(G_OBJECT(box), "button-press-event", G_CALLBACK(docklet_x11_clicked_cb), NULL); + g_signal_connect(G_OBJECT(box), "button-release-event", G_CALLBACK(docklet_x11_clicked_cb), NULL); gtk_container_add(GTK_CONTAINER(box), image); gtk_container_add(GTK_CONTAINER(docklet), box); Modified: trunk/libgaim/protocols/jabber/presence.c =================================================================== --- trunk/libgaim/protocols/jabber/presence.c 2006-11-27 19:29:00 UTC (rev 17830) +++ trunk/libgaim/protocols/jabber/presence.c 2006-11-27 22:34:46 UTC (rev 17831) @@ -185,7 +185,7 @@ jabber_presence_subscription_set(jap->gc->proto_data, jap->who, "subscribed"); - +#if 0 buddy = gaim_find_buddy(jap->gc->account, jap->who); if (buddy) { @@ -206,7 +206,7 @@ gaim_account_request_add(jap->gc->account, jap->who, NULL, NULL, NULL); } - +#endif g_free(jap->who); g_free(jap); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-27 19:29:08
|
Revision: 17830 http://svn.sourceforge.net/gaim/?rev=17830&view=rev Author: seanegan Date: 2006-11-27 11:29:00 -0800 (Mon, 27 Nov 2006) Log Message: ----------- Make About dialog fit on 800x600 Modified Paths: -------------- trunk/gtk/gtkdialogs.c Modified: trunk/gtk/gtkdialogs.c =================================================================== --- trunk/gtk/gtkdialogs.c 2006-11-27 12:12:43 UTC (rev 17829) +++ trunk/gtk/gtkdialogs.c 2006-11-27 19:29:00 UTC (rev 17830) @@ -295,11 +295,10 @@ } GAIM_DIALOG(about); - gtk_window_set_default_size(GTK_WINDOW(about), 450, -1); gtk_window_set_title(GTK_WINDOW(about), _("About Gaim")); gtk_window_set_role(GTK_WINDOW(about), "about"); gtk_window_set_resizable(GTK_WINDOW(about), TRUE); - gtk_window_set_default_size(GTK_WINDOW(about), 340, 550); /* Golden ratio in da hizzy */ + gtk_window_set_default_size(GTK_WINDOW(about), 340, 450); hbox = gtk_hbox_new(FALSE, GAIM_HIG_BORDER); gtk_container_set_border_width(GTK_CONTAINER(hbox), GAIM_HIG_BORDER); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fac...@us...> - 2006-11-27 12:12:52
|
Revision: 17829 http://svn.sourceforge.net/gaim/?rev=17829&view=rev Author: faceprint Date: 2006-11-27 04:12:43 -0800 (Mon, 27 Nov 2006) Log Message: ----------- this was causing segfaults on my laptop Modified Paths: -------------- trunk/libgaim/tests/tests.h Modified: trunk/libgaim/tests/tests.h =================================================================== --- trunk/libgaim/tests/tests.h 2006-11-27 03:58:00 UTC (rev 17828) +++ trunk/libgaim/tests/tests.h 2006-11-27 12:12:43 UTC (rev 17829) @@ -16,9 +16,9 @@ } #define assert_string_equal_free(expected, actual) { \ - gchar *a = actual; \ - assert_string_equal(expected, a); \ - g_free(a); \ + gchar *b = actual; \ + assert_string_equal(expected, b); \ + g_free(b); \ } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <amc...@us...> - 2006-11-27 03:58:00
|
Revision: 17828 http://svn.sourceforge.net/gaim/?rev=17828&view=rev Author: amc_grim Date: 2006-11-26 19:58:00 -0800 (Sun, 26 Nov 2006) Log Message: ----------- copy/paste fix... Modified Paths: -------------- trunk/libgaim/tests/test_cipher.c Modified: trunk/libgaim/tests/test_cipher.c =================================================================== --- trunk/libgaim/tests/test_cipher.c 2006-11-27 02:59:33 UTC (rev 17827) +++ trunk/libgaim/tests/test_cipher.c 2006-11-27 03:58:00 UTC (rev 17828) @@ -199,7 +199,7 @@ Suite *s = suite_create("Cipher Suite"); TCase *tc = NULL; - /* md5 tests */ + /* md4 tests */ tc = tcase_create("MD4"); tcase_add_test(tc, test_md4_empty_string); tcase_add_test(tc, test_md4_a); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <amc...@us...> - 2006-11-27 02:59:33
|
Revision: 17827 http://svn.sourceforge.net/gaim/?rev=17827&view=rev Author: amc_grim Date: 2006-11-26 18:59:33 -0800 (Sun, 26 Nov 2006) Log Message: ----------- Added tests for MD4, MD5, and SHA-1. Started the basics of making check_libgaim a libgaim "ui" Other assorted things. Modified Paths: -------------- trunk/libgaim/tests/Makefile.am trunk/libgaim/tests/check_libgaim.c trunk/libgaim/tests/tests.h Added Paths: ----------- trunk/libgaim/tests/test_cipher.c Property Changed: ---------------- trunk/libgaim/tests/ Property changes on: trunk/libgaim/tests ___________________________________________________________________ Name: svn:ignore + .deps .libs check_libgaim Makefile Makefile.in *.o Modified: trunk/libgaim/tests/Makefile.am =================================================================== --- trunk/libgaim/tests/Makefile.am 2006-11-27 02:10:19 UTC (rev 17826) +++ trunk/libgaim/tests/Makefile.am 2006-11-27 02:59:33 UTC (rev 17827) @@ -1,7 +1,23 @@ if HAVE_CHECK -TESTS = check_libgaim -check_PROGRAMS = check_libgaim -check_libgaim_SOURCES = check_libgaim.c tests.h test_util.c $(top_builddir)/libgaim/util.h -check_libgaim_CFLAGS = @CHECK_CFLAGS@ $(GLIB_CFLAGS) -check_libgaim_LDADD = @CHECK_LIBS@ $(GLIB_LIBS) $(top_builddir)/libgaim/libgaim.la +TESTS=check_libgaim + +check_PROGRAMS=check_libgaim + +check_libgaim_SOURCES=\ + check_libgaim.c \ + tests.h \ + test_cipher.c \ + test_util.c \ + $(top_builddir)/libgaim/util.h + +check_libgaim_CFLAGS=\ + @CHECK_CFLAGS@ \ + $(GLIB_CFLAGS) \ + -DBUILDDIR=\"$(top_builddir)\" + +check_libgaim_LDADD=\ + @CHECK_LIBS@ \ + $(GLIB_LIBS) \ + $(top_builddir)/libgaim/libgaim.la + endif Modified: trunk/libgaim/tests/check_libgaim.c =================================================================== --- trunk/libgaim/tests/check_libgaim.c 2006-11-27 02:10:19 UTC (rev 17826) +++ trunk/libgaim/tests/check_libgaim.c 2006-11-27 02:59:33 UTC (rev 17827) @@ -1,6 +1,46 @@ -#include "tests.h" +#include <glib.h> #include <stdlib.h> +#include "../core.h" +#include "../eventloop.h" + +#include "tests.h" + +/****************************************************************************** + * libgaim goodies + *****************************************************************************/ +static guint +gaim_check_input_add(gint fd, GaimInputCondition condition, + GaimInputFunction function, gpointer data) +{ + /* this is a no-op for now, feel free to implement it */ + return 0; +} + +static GaimEventLoopUiOps eventloop_ui_ops = { + g_timeout_add, + (guint (*)(guint))g_source_remove, + gaim_check_input_add, + (guint (*)(guint))g_source_remove, +}; + +static void +gaim_check_init(void) { + gchar *home_dir; + + gaim_eventloop_set_ui_ops(&eventloop_ui_ops); + + /* build our fake home directory */ + home_dir = g_build_path(BUILDDIR, "libgaim", "tests", "home", NULL); + gaim_util_set_user_dir(home_dir); + g_free(home_dir); + + gaim_core_init("check"); +} + +/****************************************************************************** + * Check meat and potatoes + *****************************************************************************/ Suite* master_suite(void) { @@ -15,9 +55,16 @@ SRunner *sr = srunner_create (master_suite()); srunner_add_suite(sr, util_suite()); + srunner_add_suite(sr, cipher_suite()); + /* make this a libgaim "ui" */ + gaim_check_init(); + srunner_run_all (sr, CK_NORMAL); number_failed = srunner_ntests_failed (sr); srunner_free (sr); + + gaim_core_quit(); + return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; } Added: trunk/libgaim/tests/test_cipher.c =================================================================== --- trunk/libgaim/tests/test_cipher.c (rev 0) +++ trunk/libgaim/tests/test_cipher.c 2006-11-27 02:59:33 UTC (rev 17827) @@ -0,0 +1,235 @@ +#include <glib.h> +#include <check.h> +#include <stdlib.h> +#include <string.h> + +#undef HAVE_DBUS + +#include "../cipher.h" +#include "../signal.h" + +/****************************************************************************** + * MD4 Tests + *****************************************************************************/ +#define MD4_TEST(data, digest) { \ + GaimCipher *cipher = NULL; \ + GaimCipherContext *context = NULL; \ + gchar cdigest[33]; \ + gchar *sdigest = NULL; \ + gboolean ret = FALSE; \ + \ + cipher = gaim_ciphers_find_cipher("md4"); \ + context = gaim_cipher_context_new(cipher, NULL); \ + gaim_cipher_context_append(context, (guchar *)(data), strlen((data))); \ + \ + ret = gaim_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \ + NULL); \ + \ + fail_unless(ret == TRUE, NULL); \ + \ + fail_unless(strcmp((digest), cdigest) == 0, NULL); \ + \ + gaim_cipher_context_destroy(context); \ +} + +START_TEST(test_md4_empty_string) { + MD4_TEST("", "31d6cfe0d16ae931b73c59d7e0c089c0"); +} +END_TEST + +START_TEST(test_md4_a) { + MD4_TEST("a", "bde52cb31de33e46245e05fbdbd6fb24"); +} +END_TEST + +START_TEST(test_md4_abc) { + MD4_TEST("abc", "a448017aaf21d8525fc10ae87aa6729d"); +} +END_TEST + +START_TEST(test_md4_message_digest) { + MD4_TEST("message digest", "d9130a8164549fe818874806e1c7014b"); +} +END_TEST + +START_TEST(test_md4_a_to_z) { + MD4_TEST("abcdefghijklmnopqrstuvwxyz", + "d79e1c308aa5bbcdeea8ed63df412da9"); +} +END_TEST + +START_TEST(test_md4_A_to_Z_a_to_z_0_to_9) { + MD4_TEST("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + "043f8582f241db351ce627e153e7f0e4"); +} +END_TEST + +START_TEST(test_md4_1_to_0_8_times) { + MD4_TEST("123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890", + "e33b4ddc9c38f2199c3e7b164fcc0536"); +} +END_TEST + + +/****************************************************************************** + * MD5 Tests + *****************************************************************************/ +#define MD5_TEST(data, digest) { \ + GaimCipher *cipher = NULL; \ + GaimCipherContext *context = NULL; \ + gchar cdigest[33]; \ + gchar *sdigest = NULL; \ + gboolean ret = FALSE; \ + \ + cipher = gaim_ciphers_find_cipher("md5"); \ + context = gaim_cipher_context_new(cipher, NULL); \ + gaim_cipher_context_append(context, (guchar *)(data), strlen((data))); \ + \ + ret = gaim_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \ + NULL); \ + \ + fail_unless(ret == TRUE, NULL); \ + \ + fail_unless(strcmp((digest), cdigest) == 0, NULL); \ + \ + gaim_cipher_context_destroy(context); \ +} + +START_TEST(test_md5_empty_string) { + MD5_TEST("", "d41d8cd98f00b204e9800998ecf8427e"); +} +END_TEST + +START_TEST(test_md5_a) { + MD5_TEST("a", "0cc175b9c0f1b6a831c399e269772661"); +} +END_TEST + +START_TEST(test_md5_abc) { + MD5_TEST("abc", "900150983cd24fb0d6963f7d28e17f72"); +} +END_TEST + +START_TEST(test_md5_message_digest) { + MD5_TEST("message digest", "f96b697d7cb7938d525a2f31aaf161d0"); +} +END_TEST + +START_TEST(test_md5_a_to_z) { + MD5_TEST("abcdefghijklmnopqrstuvwxyz", + "c3fcd3d76192e4007dfb496cca67e13b"); +} +END_TEST + +START_TEST(test_md5_A_to_Z_a_to_z_0_to_9) { + MD5_TEST("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", + "d174ab98d277d9f5a5611c2c9f419d9f"); +} +END_TEST + +START_TEST(test_md5_1_to_0_8_times) { + MD5_TEST("123456789012345678901234567890123456789012345678901234567890" + "12345678901234567890", + "57edf4a22be3c955ac49da2e2107b67a"); +} +END_TEST + +/****************************************************************************** + * SHA-1 Tests + *****************************************************************************/ +#define SHA1_TEST(data, digest) { \ + GaimCipher *cipher = NULL; \ + GaimCipherContext *context = NULL; \ + gchar cdigest[41]; \ + gchar *sdigest = NULL; \ + gboolean ret = FALSE; \ + \ + cipher = gaim_ciphers_find_cipher("sha1"); \ + context = gaim_cipher_context_new(cipher, NULL); \ + \ + if((data)) { \ + gaim_cipher_context_append(context, (guchar *)(data), strlen((data))); \ + } else { \ + gint j; \ + guchar buff[1000]; \ + \ + memset(buff, 'a', 1000); \ + \ + for(j = 0; j < 1000; j++) \ + gaim_cipher_context_append(context, buff, 1000); \ + } \ + \ + ret = gaim_cipher_context_digest_to_str(context, sizeof(cdigest), cdigest, \ + NULL); \ + \ + fail_unless(ret == TRUE, NULL); \ + \ + fail_unless(strcmp((digest), cdigest) == 0, NULL); \ + \ + gaim_cipher_context_destroy(context); \ +} + +START_TEST(test_sha1_a) { + SHA1_TEST("a", "86f7e437faa5a7fce15d1ddcb9eaeaea377667b8"); +} +END_TEST + +START_TEST(test_sha1_abc) { + SHA1_TEST("abc", "a9993e364706816aba3e25717850c26c9cd0d89d"); +} +END_TEST + +START_TEST(test_sha1_abcd_gibberish) { + SHA1_TEST("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", + "84983e441c3bd26ebaae4aa1f95129e5e54670f1"); +} +END_TEST + +START_TEST(test_sha1_1000_as_1000_times) { + SHA1_TEST(NULL, "34aa973cd4c4daa4f61eeb2bdbad27316534016f"); +} +END_TEST + +/****************************************************************************** + * Suite + *****************************************************************************/ +Suite * +cipher_suite(void) { + Suite *s = suite_create("Cipher Suite"); + TCase *tc = NULL; + + /* md5 tests */ + tc = tcase_create("MD4"); + tcase_add_test(tc, test_md4_empty_string); + tcase_add_test(tc, test_md4_a); + tcase_add_test(tc, test_md4_abc); + tcase_add_test(tc, test_md4_message_digest); + tcase_add_test(tc, test_md4_a_to_z); + tcase_add_test(tc, test_md4_A_to_Z_a_to_z_0_to_9); + tcase_add_test(tc, test_md4_1_to_0_8_times); + suite_add_tcase(s, tc); + + /* md5 tests */ + tc = tcase_create("MD5"); + tcase_add_test(tc, test_md5_empty_string); + tcase_add_test(tc, test_md5_a); + tcase_add_test(tc, test_md5_abc); + tcase_add_test(tc, test_md5_message_digest); + tcase_add_test(tc, test_md5_a_to_z); + tcase_add_test(tc, test_md5_A_to_Z_a_to_z_0_to_9); + tcase_add_test(tc, test_md5_1_to_0_8_times); + suite_add_tcase(s, tc); + + /* sha1 tests */ + tc = tcase_create("SHA1"); + tcase_add_test(tc, test_sha1_a); + tcase_add_test(tc, test_sha1_abc); + tcase_add_test(tc, test_sha1_abcd_gibberish); + tcase_add_test(tc, test_sha1_1000_as_1000_times); + suite_add_tcase(s, tc); + + return s; +} + + Property changes on: trunk/libgaim/tests/test_cipher.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:keywords + Id Revision Name: svn:eol-style + native Modified: trunk/libgaim/tests/tests.h =================================================================== --- trunk/libgaim/tests/tests.h 2006-11-27 02:10:19 UTC (rev 17826) +++ trunk/libgaim/tests/tests.h 2006-11-27 02:59:33 UTC (rev 17827) @@ -7,6 +7,7 @@ /* define the test suites here */ /* remember to add the suite to the runner in check_libgaim.c */ Suite * util_suite(void); +Suite * cipher_suite(void); /* helper macros */ #define assert_string_equal(expected, actual) { \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <amc...@us...> - 2006-11-27 02:10:23
|
Revision: 17826 http://svn.sourceforge.net/gaim/?rev=17826&view=rev Author: amc_grim Date: 2006-11-26 18:10:19 -0800 (Sun, 26 Nov 2006) Log Message: ----------- ignore tweaks... Property Changed: ---------------- trunk/libgaim/protocols/oscar/ Property changes on: trunk/libgaim/protocols/oscar ___________________________________________________________________ Name: svn:ignore - Makefile.in Makefile .deps .libs *.lo *.o *.dll *.dll.a + Makefile.in Makefile .deps .libs *.la *.lo *.o *.dll *.dll.a This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fac...@us...> - 2006-11-26 23:31:17
|
Revision: 17825 http://svn.sourceforge.net/gaim/?rev=17825&view=rev Author: faceprint Date: 2006-11-26 15:31:16 -0800 (Sun, 26 Nov 2006) Log Message: ----------- partition the tests Modified Paths: -------------- trunk/libgaim/tests/Makefile.am trunk/libgaim/tests/check_libgaim.c Added Paths: ----------- trunk/libgaim/tests/test_util.c trunk/libgaim/tests/tests.h Modified: trunk/libgaim/tests/Makefile.am =================================================================== --- trunk/libgaim/tests/Makefile.am 2006-11-26 22:29:21 UTC (rev 17824) +++ trunk/libgaim/tests/Makefile.am 2006-11-26 23:31:16 UTC (rev 17825) @@ -1,7 +1,7 @@ if HAVE_CHECK TESTS = check_libgaim check_PROGRAMS = check_libgaim -check_libgaim_SOURCES = check_libgaim.c $(top_builddir)/libgaim/gaim.h +check_libgaim_SOURCES = check_libgaim.c tests.h test_util.c $(top_builddir)/libgaim/util.h check_libgaim_CFLAGS = @CHECK_CFLAGS@ $(GLIB_CFLAGS) check_libgaim_LDADD = @CHECK_LIBS@ $(GLIB_LIBS) $(top_builddir)/libgaim/libgaim.la endif Modified: trunk/libgaim/tests/check_libgaim.c =================================================================== --- trunk/libgaim/tests/check_libgaim.c 2006-11-26 22:29:21 UTC (rev 17824) +++ trunk/libgaim/tests/check_libgaim.c 2006-11-26 23:31:16 UTC (rev 17825) @@ -1,67 +1,21 @@ -#include <glib.h> -#include <check.h> +#include "tests.h" #include <stdlib.h> -#include "../util.h" -START_TEST(test_util_base16_encode) +Suite* +master_suite(void) { - gchar *out = gaim_base16_encode("hello, world!", 14); - fail_unless(strcmp("68656c6c6f2c20776f726c642100", out) == 0, NULL); - g_free(out); -} -END_TEST + Suite *s = suite_create("Master Suite"); -START_TEST(test_util_base16_decode) -{ - gsize sz = 0; - guchar *out = gaim_base16_decode("21646c726f77202c6f6c6c656800", &sz); - fail_unless(sz == 14, NULL); - fail_unless(strcmp("!dlrow ,olleh", out) == 0, NULL); - g_free(out); -} -END_TEST - -START_TEST(test_util_base64_encode) -{ - gchar *out = gaim_base64_encode("forty-two", 10); - fail_unless(strcmp("Zm9ydHktdHdvAA==",out) == 0, NULL); - g_free(out); -} -END_TEST - -START_TEST(test_util_base64_decode) -{ - gsize sz; - guchar *out = gaim_base64_decode("b3d0LXl0cm9mAA==", &sz); - fail_unless(sz == 10, NULL); - fail_unless(strcmp("owt-ytrof", out) == 0, NULL); - g_free(out); -} -END_TEST - -Suite * -util_suite(void) -{ - Suite *s = suite_create("Utility Functions"); - - TCase *tc = tcase_create("Base16"); - tcase_add_test(tc, test_util_base16_encode); - tcase_add_test(tc, test_util_base16_decode); - suite_add_tcase(s, tc); - - tc = tcase_create("Base64"); - tcase_add_test(tc, test_util_base64_encode); - tcase_add_test(tc, test_util_base64_decode); - suite_add_tcase(s, tc); - return s; } int main(void) { int number_failed; - Suite *s = util_suite (); - SRunner *sr = srunner_create (s); + SRunner *sr = srunner_create (master_suite()); + + srunner_add_suite(sr, util_suite()); + srunner_run_all (sr, CK_NORMAL); number_failed = srunner_ntests_failed (sr); srunner_free (sr); Added: trunk/libgaim/tests/test_util.c =================================================================== --- trunk/libgaim/tests/test_util.c (rev 0) +++ trunk/libgaim/tests/test_util.c 2006-11-26 23:31:16 UTC (rev 17825) @@ -0,0 +1,104 @@ +#include "tests.h" +#include "../util.h" + +START_TEST(test_util_base16_encode) +{ + assert_string_equal_free("68656c6c6f2c20776f726c642100", gaim_base16_encode("hello, world!", 14)); +} +END_TEST + +START_TEST(test_util_base16_decode) +{ + gsize sz = 0; + guchar *out = gaim_base16_decode("21646c726f77202c6f6c6c656800", &sz); + fail_unless(sz == 14, NULL); + fail_unless(strcmp("!dlrow ,olleh", out) == 0, NULL); + g_free(out); +} +END_TEST + +START_TEST(test_util_base64_encode) +{ + assert_string_equal_free("Zm9ydHktdHdvAA==", gaim_base64_encode("forty-two", 10)); +} +END_TEST + +START_TEST(test_util_base64_decode) +{ + gsize sz; + guchar *out = gaim_base64_decode("b3d0LXl0cm9mAA==", &sz); + fail_unless(sz == 10, NULL); + fail_unless(strcmp("owt-ytrof", out) == 0, NULL); + g_free(out); +} +END_TEST + +START_TEST(test_util_escape_filename) +{ + assert_string_equal("foo", gaim_escape_filename("foo")); + assert_string_equal("@oo", gaim_escape_filename("@oo")); + assert_string_equal("#oo", gaim_escape_filename("#oo")); + assert_string_equal("-oo", gaim_escape_filename("-oo")); + assert_string_equal("_oo", gaim_escape_filename("_oo")); + assert_string_equal(".oo", gaim_escape_filename(".oo")); + assert_string_equal("%25oo", gaim_escape_filename("%oo")); + assert_string_equal("%21oo", gaim_escape_filename("!oo")); +} +END_TEST + +START_TEST(test_util_unescape_filename) +{ + assert_string_equal("bar", gaim_unescape_filename("bar")); + assert_string_equal("@ar", gaim_unescape_filename("@ar")); + assert_string_equal("!ar", gaim_unescape_filename("!ar")); + assert_string_equal("!ar", gaim_unescape_filename("%21ar")); + assert_string_equal("%ar", gaim_unescape_filename("%25ar")); +} +END_TEST + + +START_TEST(test_util_text_strip_mnemonic) +{ + assert_string_equal_free("", gaim_text_strip_mnemonic("")); + assert_string_equal_free("foo", gaim_text_strip_mnemonic("foo")); + assert_string_equal_free("foo", gaim_text_strip_mnemonic("_foo")); + +} +END_TEST + +START_TEST(test_util_email_is_valid) +{ + fail_unless(gaim_email_is_valid("gai...@li...")); +} +END_TEST + +Suite * +util_suite(void) +{ + Suite *s = suite_create("Utility Functions"); + + TCase *tc = tcase_create("Base16"); + tcase_add_test(tc, test_util_base16_encode); + tcase_add_test(tc, test_util_base16_decode); + suite_add_tcase(s, tc); + + tc = tcase_create("Base64"); + tcase_add_test(tc, test_util_base64_encode); + tcase_add_test(tc, test_util_base64_decode); + suite_add_tcase(s, tc); + + tc = tcase_create("Filenames"); + tcase_add_test(tc, test_util_escape_filename); + tcase_add_test(tc, test_util_unescape_filename); + suite_add_tcase(s, tc); + + tc = tcase_create("Strip Mnemonic"); + tcase_add_test(tc, test_util_text_strip_mnemonic); + suite_add_tcase(s, tc); + + tc = tcase_create("Email"); + tcase_add_test(tc, test_util_email_is_valid); + suite_add_tcase(s, tc); + + return s; +} Property changes on: trunk/libgaim/tests/test_util.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/libgaim/tests/tests.h =================================================================== --- trunk/libgaim/tests/tests.h (rev 0) +++ trunk/libgaim/tests/tests.h 2006-11-26 23:31:16 UTC (rev 17825) @@ -0,0 +1,25 @@ +#ifndef TESTS_H +# define TESTS_H + +#include <glib.h> +#include <check.h> + +/* define the test suites here */ +/* remember to add the suite to the runner in check_libgaim.c */ +Suite * util_suite(void); + +/* helper macros */ +#define assert_string_equal(expected, actual) { \ + const gchar *a = actual; \ + fail_unless(strcmp(expected, a) == 0, "Expecting '%s' but got '%s'", expected, a); \ +} + +#define assert_string_equal_free(expected, actual) { \ + gchar *a = actual; \ + assert_string_equal(expected, a); \ + g_free(a); \ +} + + +#endif /* ifndef TESTS_H */ + Property changes on: trunk/libgaim/tests/tests.h ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-26 22:29:22
|
Revision: 17824 http://svn.sourceforge.net/gaim/?rev=17824&view=rev Author: sadrul Date: 2006-11-26 14:29:21 -0800 (Sun, 26 Nov 2006) Log Message: ----------- Don't crash on null websites nor nothing else. Modified Paths: -------------- trunk/console/gntplugin.c Modified: trunk/console/gntplugin.c =================================================================== --- trunk/console/gntplugin.c 2006-11-26 22:03:23 UTC (rev 17823) +++ trunk/console/gntplugin.c 2006-11-26 22:29:21 UTC (rev 17824) @@ -115,8 +115,8 @@ /* XXX: Use formatting and stuff */ gnt_text_view_clear(GNT_TEXT_VIEW(plugins.aboot)); text = g_strdup_printf(_("Name: %s\nVersion: %s\nDescription: %s\nAuthor: %s\nWebsite: %s\nFilename: %s\n"), - plugin->info->name, plugin->info->version, plugin->info->description, - plugin->info->author, plugin->info->homepage, plugin->path); + SAFE(plugin->info->name), SAFE(plugin->info->version), SAFE(plugin->info->description), + SAFE(plugin->info->author), SAFE(plugin->info->homepage), SAFE(plugin->path)); gnt_text_view_append_text_with_flags(GNT_TEXT_VIEW(plugins.aboot), text, GNT_TEXT_FLAG_NORMAL); gnt_text_view_scroll(GNT_TEXT_VIEW(plugins.aboot), 0); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fac...@us...> - 2006-11-26 22:03:28
|
Revision: 17823 http://svn.sourceforge.net/gaim/?rev=17823&view=rev Author: faceprint Date: 2006-11-26 14:03:23 -0800 (Sun, 26 Nov 2006) Log Message: ----------- baby steps: 4 unit tests for libgaim to run these, you'll need check (http://check.sf.net/) 0.9.4 or later installed they run when you run 'make check' Modified Paths: -------------- trunk/configure.ac trunk/libgaim/Makefile.am Added Paths: ----------- trunk/libgaim/tests/ trunk/libgaim/tests/Makefile.am trunk/libgaim/tests/check_libgaim.c Modified: trunk/configure.ac =================================================================== --- trunk/configure.ac 2006-11-26 20:45:29 UTC (rev 17822) +++ trunk/configure.ac 2006-11-26 22:03:23 UTC (rev 17823) @@ -1807,6 +1807,14 @@ fi dnl ####################################################################### +dnl # Check for check +dnl ####################################################################### +PKG_CHECK_MODULES(CHECK, check >= 0.9.4, have_check=yes, have_check=no) +AM_CONDITIONAL(HAVE_CHECK, test "x$have_check" = "xyes") +AC_SUBST(CHECK_CFLAGS) +AC_SUBST(CHECK_LIBS) + +dnl ####################################################################### dnl # Check for Doxygen and dot (part of GraphViz) dnl ####################################################################### AC_ARG_ENABLE(doxygen, @@ -1906,6 +1914,7 @@ libgaim/protocols/toc/Makefile libgaim/protocols/yahoo/Makefile libgaim/protocols/zephyr/Makefile + libgaim/tests/Makefile console/Makefile console/libgnt/Makefile console/libgnt/gnt.pc Modified: trunk/libgaim/Makefile.am =================================================================== --- trunk/libgaim/Makefile.am 2006-11-26 20:45:29 UTC (rev 17822) +++ trunk/libgaim/Makefile.am 2006-11-26 22:03:23 UTC (rev 17823) @@ -23,7 +23,7 @@ GCONF_DIR=gconf endif -SUBDIRS = $(GCONF_DIR) plugins protocols +SUBDIRS = $(GCONF_DIR) plugins protocols tests gaim_coresources = \ account.c \ Added: trunk/libgaim/tests/Makefile.am =================================================================== --- trunk/libgaim/tests/Makefile.am (rev 0) +++ trunk/libgaim/tests/Makefile.am 2006-11-26 22:03:23 UTC (rev 17823) @@ -0,0 +1,7 @@ +if HAVE_CHECK +TESTS = check_libgaim +check_PROGRAMS = check_libgaim +check_libgaim_SOURCES = check_libgaim.c $(top_builddir)/libgaim/gaim.h +check_libgaim_CFLAGS = @CHECK_CFLAGS@ $(GLIB_CFLAGS) +check_libgaim_LDADD = @CHECK_LIBS@ $(GLIB_LIBS) $(top_builddir)/libgaim/libgaim.la +endif Property changes on: trunk/libgaim/tests/Makefile.am ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/libgaim/tests/check_libgaim.c =================================================================== --- trunk/libgaim/tests/check_libgaim.c (rev 0) +++ trunk/libgaim/tests/check_libgaim.c 2006-11-26 22:03:23 UTC (rev 17823) @@ -0,0 +1,69 @@ +#include <glib.h> +#include <check.h> +#include <stdlib.h> +#include "../util.h" + +START_TEST(test_util_base16_encode) +{ + gchar *out = gaim_base16_encode("hello, world!", 14); + fail_unless(strcmp("68656c6c6f2c20776f726c642100", out) == 0, NULL); + g_free(out); +} +END_TEST + +START_TEST(test_util_base16_decode) +{ + gsize sz = 0; + guchar *out = gaim_base16_decode("21646c726f77202c6f6c6c656800", &sz); + fail_unless(sz == 14, NULL); + fail_unless(strcmp("!dlrow ,olleh", out) == 0, NULL); + g_free(out); +} +END_TEST + +START_TEST(test_util_base64_encode) +{ + gchar *out = gaim_base64_encode("forty-two", 10); + fail_unless(strcmp("Zm9ydHktdHdvAA==",out) == 0, NULL); + g_free(out); +} +END_TEST + +START_TEST(test_util_base64_decode) +{ + gsize sz; + guchar *out = gaim_base64_decode("b3d0LXl0cm9mAA==", &sz); + fail_unless(sz == 10, NULL); + fail_unless(strcmp("owt-ytrof", out) == 0, NULL); + g_free(out); +} +END_TEST + +Suite * +util_suite(void) +{ + Suite *s = suite_create("Utility Functions"); + + TCase *tc = tcase_create("Base16"); + tcase_add_test(tc, test_util_base16_encode); + tcase_add_test(tc, test_util_base16_decode); + suite_add_tcase(s, tc); + + tc = tcase_create("Base64"); + tcase_add_test(tc, test_util_base64_encode); + tcase_add_test(tc, test_util_base64_decode); + suite_add_tcase(s, tc); + + return s; +} + +int main(void) +{ + int number_failed; + Suite *s = util_suite (); + SRunner *sr = srunner_create (s); + srunner_run_all (sr, CK_NORMAL); + number_failed = srunner_ntests_failed (sr); + srunner_free (sr); + return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} Property changes on: trunk/libgaim/tests/check_libgaim.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <fac...@us...> - 2006-11-26 20:45:32
|
Revision: 17822 http://svn.sourceforge.net/gaim/?rev=17822&view=rev Author: faceprint Date: 2006-11-26 12:45:29 -0800 (Sun, 26 Nov 2006) Log Message: ----------- found this while setting up a unit testing framework (we're already reaping the benefits) Modified Paths: -------------- trunk/libgaim/util.c Modified: trunk/libgaim/util.c =================================================================== --- trunk/libgaim/util.c 2006-11-26 19:49:14 UTC (rev 17821) +++ trunk/libgaim/util.c 2006-11-26 20:45:29 UTC (rev 17822) @@ -118,7 +118,7 @@ len = strlen(str); g_return_val_if_fail(strlen(str) > 0, 0); - g_return_val_if_fail(len % 2 > 0, 0); + g_return_val_if_fail(len % 2 == 0, 0); data = g_malloc(len / 2); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-26 19:49:17
|
Revision: 17821 http://svn.sourceforge.net/gaim/?rev=17821&view=rev Author: sadrul Date: 2006-11-26 11:49:14 -0800 (Sun, 26 Nov 2006) Log Message: ----------- Show the placeholder icon in the accounts window for new accounts. Modified Paths: -------------- trunk/gtk/gtkaccount.c Modified: trunk/gtk/gtkaccount.c =================================================================== --- trunk/gtk/gtkaccount.c 2006-11-26 17:25:08 UTC (rev 17820) +++ trunk/gtk/gtkaccount.c 2006-11-26 19:49:14 UTC (rev 17821) @@ -617,12 +617,12 @@ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->icon_check), !gaim_account_get_ui_bool(dialog->account, GAIM_GTK_UI, "use-global-buddyicon", TRUE)); - - set_dialog_icon(dialog, - g_strdup(gaim_account_get_ui_string(dialog->account, - GAIM_GTK_UI, "non-global-buddyicon", NULL))); } + set_dialog_icon(dialog, dialog->account ? + g_strdup(gaim_account_get_ui_string(dialog->account, + GAIM_GTK_UI, "non-global-buddyicon", NULL)) : NULL); + if (!dialog->prpl_info || (!(dialog->prpl_info->options & OPT_PROTO_MAIL_CHECK) && (dialog->prpl_info->icon_spec.format == NULL))) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <the...@us...> - 2006-11-26 17:25:09
|
Revision: 17820 http://svn.sourceforge.net/gaim/?rev=17820&view=rev Author: thekingant Date: 2006-11-26 09:25:08 -0800 (Sun, 26 Nov 2006) Log Message: ----------- gntgaim wasn't compiling for me with the following error gntwindow.c: In function 'gnt_window_class_init': gntwindow.c:47: error: implicit declaration of function 'gnt_style_read_actions' Modified Paths: -------------- trunk/console/libgnt/gntwindow.c Modified: trunk/console/libgnt/gntwindow.c =================================================================== --- trunk/console/libgnt/gntwindow.c 2006-11-25 17:49:23 UTC (rev 17819) +++ trunk/console/libgnt/gntwindow.c 2006-11-26 17:25:08 UTC (rev 17820) @@ -1,3 +1,4 @@ +#include "gntstyle.h" #include "gntwindow.h" #include <string.h> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nos...@us...> - 2006-11-25 17:49:25
|
Revision: 17819 http://svn.sourceforge.net/gaim/?rev=17819&view=rev Author: nosnilmot Date: 2006-11-25 09:49:23 -0800 (Sat, 25 Nov 2006) Log Message: ----------- i18n support for gaim-text Modified Paths: -------------- trunk/console/gntgaim.c Modified: trunk/console/gntgaim.c =================================================================== --- trunk/console/gntgaim.c 2006-11-25 16:47:23 UTC (rev 17818) +++ trunk/console/gntgaim.c 2006-11-25 17:49:23 UTC (rev 17819) @@ -263,6 +263,16 @@ gaim_br_set_locate_fallback_func(gnt_find_binary_location, argv[0]); +#ifdef ENABLE_NLS + bindtextdomain(PACKAGE, LOCALEDIR); + bind_textdomain_codeset(PACKAGE, "UTF-8"); + textdomain(PACKAGE); +#endif + +#ifdef HAVE_SETLOCALE + setlocale(LC_ALL, ""); +#endif + /* scan command-line options */ opterr = 1; while ((opt = getopt_long(argc, argv, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nos...@us...> - 2006-11-25 16:47:26
|
Revision: 17818 http://svn.sourceforge.net/gaim/?rev=17818&view=rev Author: nosnilmot Date: 2006-11-25 08:47:23 -0800 (Sat, 25 Nov 2006) Log Message: ----------- Add fallback binary relocation support (copied from gtk gaim). This might make Alver's IRIX build work. Modified Paths: -------------- trunk/console/gntgaim.c Modified: trunk/console/gntgaim.c =================================================================== --- trunk/console/gntgaim.c 2006-11-23 22:35:32 UTC (rev 17817) +++ trunk/console/gntgaim.c 2006-11-25 16:47:23 UTC (rev 17818) @@ -27,6 +27,7 @@ #include "ft.h" #include "log.h" #include "notify.h" +#include "prefix.h" #include "prefs.h" #include "prpl.h" #include "pounce.h" @@ -156,6 +157,66 @@ return &eventloop_ops; } +/* This is copied from gtkgaim */ +static char * +gnt_find_binary_location(void *symbol, void *data) +{ + static char *fullname = NULL; + static gboolean first = TRUE; + + char *argv0 = data; + struct stat st; + char *basebuf, *linkbuf, *fullbuf; + + if (!first) + /* We've already been through this. */ + return strdup(fullname); + + first = FALSE; + + if (!argv0) + return NULL; + + + basebuf = g_find_program_in_path(argv0); + + /* But we still need to deal with symbolic links */ + g_lstat(basebuf, &st); + while ((st.st_mode & S_IFLNK) == S_IFLNK) { + int written; + linkbuf = g_malloc(1024); + written = readlink(basebuf, linkbuf, 1024 - 1); + if (written == -1) + { + /* This really shouldn't happen, but do we + * need something better here? */ + g_free(linkbuf); + continue; + } + linkbuf[written] = '\0'; + if (linkbuf[0] == G_DIR_SEPARATOR) { + /* an absolute path */ + fullbuf = g_strdup(linkbuf); + } else { + char *dirbuf = g_path_get_dirname(basebuf); + /* a relative path */ + fullbuf = g_strdup_printf("%s%s%s", + dirbuf, G_DIR_SEPARATOR_S, + linkbuf); + g_free(dirbuf); + } + /* There's no memory leak here. Really! */ + g_free(linkbuf); + g_free(basebuf); + basebuf = fullbuf; + g_lstat(basebuf, &st); + } + + fullname = basebuf; + return strdup(fullname); +} + + /* This is mostly copied from gtkgaim's source tree */ static void show_usage(const char *name, gboolean terse) @@ -200,6 +261,8 @@ {0, 0, 0, 0} }; + gaim_br_set_locate_fallback_func(gnt_find_binary_location, argv[0]); + /* scan command-line options */ opterr = 1; while ((opt = getopt_long(argc, argv, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-23 22:35:34
|
Revision: 17817 http://svn.sourceforge.net/gaim/?rev=17817&view=rev Author: seanegan Date: 2006-11-23 14:35:32 -0800 (Thu, 23 Nov 2006) Log Message: ----------- minor graphical tweaks Modified Paths: -------------- trunk/gtk/gtkaccount.c trunk/gtk/gtkblist.c trunk/gtk/gtkutils.c trunk/libgaim/account.h Modified: trunk/gtk/gtkaccount.c =================================================================== --- trunk/gtk/gtkaccount.c 2006-11-23 15:22:53 UTC (rev 17816) +++ trunk/gtk/gtkaccount.c 2006-11-23 22:35:32 UTC (rev 17817) @@ -2316,7 +2316,7 @@ : (gaim_connection_get_display_name(gc) != NULL ? gaim_connection_get_display_name(gc) : gaim_account_get_username(account))), - (msg != NULL ? ":\n" : "."), + (msg != NULL ? ": " : "."), (msg != NULL ? msg : "")); } Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-11-23 15:22:53 UTC (rev 17816) +++ trunk/gtk/gtkblist.c 2006-11-23 22:35:32 UTC (rev 17817) @@ -4177,11 +4177,11 @@ gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0); gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview); + gtkblist->scrollbook = gtk_gaim_scroll_book_new(); + gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->scrollbook, FALSE, FALSE, 0); + sep = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sep, FALSE, FALSE, 0); - - gtkblist->scrollbook = gtk_gaim_scroll_book_new(); - gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->scrollbook, FALSE, FALSE, 0); /* Create an empty vbox used for showing connection errors */ gtkblist->error_buttons = gtk_vbox_new(FALSE, 0); Modified: trunk/gtk/gtkutils.c =================================================================== --- trunk/gtk/gtkutils.c 2006-11-23 15:22:53 UTC (rev 17816) +++ trunk/gtk/gtkutils.c 2006-11-23 22:35:32 UTC (rev 17817) @@ -2883,10 +2883,11 @@ { GtkWidget *vbox; GtkWidget *hbox; - GtkWidget *bbox; + GtkWidget *hbox2; GtkWidget *label; GtkWidget *button; GtkWidget *img = NULL; + GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); char label_text[2048]; const char *button_text; GCallback callback; @@ -2926,37 +2927,38 @@ primary_esc, secondary ? "\n" : "", secondary?secondary_esc:""); g_free(primary_esc); label = gtk_label_new(NULL); + gtk_widget_set_size_request(label, gaim_prefs_get_int("/gaim/gtk/blist/width")-16,-1); gtk_widget_modify_text(vbox, GTK_STATE_NORMAL, &(label->style->white)); gtk_label_set_markup(GTK_LABEL(label), label_text); gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0, 0); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); #if GTK_CHECK_VERSION(2,6,0) - g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); + // g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); #endif - - bbox = gtk_hbutton_box_new(); - gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); - gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); - gtk_box_set_spacing(GTK_BOX(bbox), 6); + hbox2 = gtk_hbox_new(FALSE, 6); + gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 0); + va_start(args, user_data); while ((button_text = va_arg(args, char*))) { callback = va_arg(args, GCallback); button = gtk_button_new(); - gtk_container_set_border_width(GTK_CONTAINER(button), 0); + if (callback) g_signal_connect_swapped(G_OBJECT(button), "clicked", callback, user_data); g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy), vbox); hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(button), hbox); + gtk_container_set_border_width(GTK_CONTAINER(hbox), 3); g_snprintf(label_text, sizeof(label_text), "<span size=\"smaller\">%s</span>", button_text); label = gtk_label_new(NULL); gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), label_text); gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); - gtk_container_add(GTK_CONTAINER(bbox), button); + gtk_box_pack_end(GTK_CONTAINER(hbox2), button, FALSE, FALSE, 0); + gtk_size_group_add_widget(sg, button); } va_end(args); Modified: trunk/libgaim/account.h =================================================================== --- trunk/libgaim/account.h 2006-11-23 15:22:53 UTC (rev 17816) +++ trunk/libgaim/account.h 2006-11-23 22:35:32 UTC (rev 17817) @@ -44,7 +44,7 @@ { /* A buddy we already have added us to their buddy list. */ void (*notify_added)(GaimAccount *account, const char *remote_user, - const char *id, const char *alias, + const char *id, const char *alias, const char *message); void (*status_changed)(GaimAccount *account, GaimStatus *status); /* Someone we don't have on our list added us. Will prompt to add them. */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <tal...@us...> - 2006-11-23 15:22:56
|
Revision: 17816 http://svn.sourceforge.net/gaim/?rev=17816&view=rev Author: taliesein Date: 2006-11-23 07:22:53 -0800 (Thu, 23 Nov 2006) Log Message: ----------- This fixes gnt builds for me (avoiding multiple-definition errors when linking) by marking some declarations as extern in the gntkeys.h and actually defining them in gntkeys.c Modified Paths: -------------- trunk/console/libgnt/gntkeys.c trunk/console/libgnt/gntkeys.h Modified: trunk/console/libgnt/gntkeys.c =================================================================== --- trunk/console/libgnt/gntkeys.c 2006-11-23 08:37:07 UTC (rev 17815) +++ trunk/console/libgnt/gntkeys.c 2006-11-23 15:22:53 UTC (rev 17816) @@ -3,6 +3,12 @@ #include <stdlib.h> #include <string.h> +char *gnt_key_cup; +char *gnt_key_cdown; +char *gnt_key_cleft; +char *gnt_key_cright; + + static const char *term; void gnt_init_keys() Modified: trunk/console/libgnt/gntkeys.h =================================================================== --- trunk/console/libgnt/gntkeys.h 2006-11-23 08:37:07 UTC (rev 17815) +++ trunk/console/libgnt/gntkeys.h 2006-11-23 15:22:53 UTC (rev 17816) @@ -9,10 +9,10 @@ * ctrl-up, ctrl-down etc. So I am going to hard-code some of the information * for some popular $TERMs */ -char *gnt_key_cup; -char *gnt_key_cdown; -char *gnt_key_cleft; -char *gnt_key_cright; +extern char *gnt_key_cup; +extern char *gnt_key_cdown; +extern char *gnt_key_cleft; +extern char *gnt_key_cright; #define SAFE(x) ((x) ? (x) : "") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-23 08:37:08
|
Revision: 17815 http://svn.sourceforge.net/gaim/?rev=17815&view=rev Author: seanegan Date: 2006-11-23 00:37:07 -0800 (Thu, 23 Nov 2006) Log Message: ----------- buddy-list alerts. I've made the two existing account ui_ops ('so-and-so has added you' and 'would you like to add so-and-so') use this. I'll follow up with a new 'so-and-so needs you to authorize him' ui_op, and replace the gaim_request_action() calls in the appropriate prpls Modified Paths: -------------- trunk/gtk/Makefile.am trunk/gtk/Makefile.mingw trunk/gtk/gtkaccount.c trunk/gtk/gtkblist.c trunk/gtk/gtkblist.h trunk/gtk/gtkutils.c trunk/gtk/gtkutils.h Added Paths: ----------- trunk/gtk/gtkscrollbook.c trunk/gtk/gtkscrollbook.h Modified: trunk/gtk/Makefile.am =================================================================== --- trunk/gtk/Makefile.am 2006-11-22 21:33:51 UTC (rev 17814) +++ trunk/gtk/Makefile.am 2006-11-23 08:37:07 UTC (rev 17815) @@ -97,6 +97,7 @@ gtkrequest.c \ gtkroomlist.c \ gtksavedstatuses.c \ + gtkscrollbook.c \ gtksession.c \ gtksound.c \ gtksourceiter.c \ @@ -143,6 +144,7 @@ gtkrequest.h \ gtkroomlist.h \ gtksavedstatuses.h \ + gtkscrollbook.h \ gtksession.h \ gtksound.h \ gtksourceiter.h \ Modified: trunk/gtk/Makefile.mingw =================================================================== --- trunk/gtk/Makefile.mingw 2006-11-22 21:33:51 UTC (rev 17814) +++ trunk/gtk/Makefile.mingw 2006-11-23 08:37:07 UTC (rev 17815) @@ -82,6 +82,7 @@ gtkrequest.c \ gtkroomlist.c \ gtksavedstatuses.c \ + gtkscrollbook.c \ gtksound.c \ gtksourceiter.c \ gtkstatusbox.c \ Modified: trunk/gtk/gtkaccount.c =================================================================== --- trunk/gtk/gtkaccount.c 2006-11-22 21:33:51 UTC (rev 17814) +++ trunk/gtk/gtkaccount.c 2006-11-23 08:37:07 UTC (rev 17815) @@ -2176,6 +2176,7 @@ GtkWidget *button; int width, height; + if (accounts_window != NULL) { gtk_window_present(GTK_WINDOW(accounts_window->window)); return; @@ -2315,7 +2316,7 @@ : (gaim_connection_get_display_name(gc) != NULL ? gaim_connection_get_display_name(gc) : gaim_account_get_username(account))), - (msg != NULL ? ": " : "."), + (msg != NULL ? ":\n" : "."), (msg != NULL ? msg : "")); } @@ -2326,13 +2327,15 @@ { char *buffer; GaimConnection *gc; + GtkWidget *alert; gc = gaim_account_get_connection(account); buffer = make_info(account, gc, remote_user, id, alias, msg); + alert = gaim_gtk_make_mini_dialog(gc, GAIM_STOCK_DIALOG_INFO, buffer, + NULL, NULL, _("Close"), NULL, NULL); + gaim_gtk_blist_add_alert(alert); - gaim_notify_info(NULL, NULL, buffer, NULL); - g_free(buffer); } @@ -2344,6 +2347,7 @@ char *buffer; GaimConnection *gc; GaimGtkAccountAddUserData *data; + GtkWidget *alert; gc = gaim_account_get_connection(account); @@ -2351,14 +2355,14 @@ data->account = account; data->username = g_strdup(remote_user); data->alias = g_strdup(alias); - + buffer = make_info(account, gc, remote_user, id, alias, msg); - - gaim_request_action(NULL, NULL, _("Add buddy to your list?"), - buffer, GAIM_DEFAULT_ACTION_NONE, data, 2, - _("Add"), G_CALLBACK(add_user_cb), - _("Cancel"), G_CALLBACK(free_add_user_data)); - + alert = gaim_gtk_make_mini_dialog(gc, GAIM_STOCK_DIALOG_INFO, + _("Add buddy to your list?"), buffer, data, + _("Cancel"), G_CALLBACK(free_add_user_data), + _("Add"), G_CALLBACK(add_user_cb), NULL); + gaim_gtk_blist_add_alert(alert); + g_free(buffer); } Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-11-22 21:33:51 UTC (rev 17814) +++ trunk/gtk/gtkblist.c 2006-11-23 08:37:07 UTC (rev 17815) @@ -54,6 +54,7 @@ #include "gtkprivacy.h" #include "gtkroomlist.h" #include "gtkstatusbox.h" +#include "gtkscrollbook.h" #include "gtkutils.h" #include <gdk/gdkkeysyms.h> @@ -4030,7 +4031,7 @@ gtkblist->vbox = gtk_vbox_new(FALSE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), gtkblist->vbox, NULL); gtk_widget_show_all(gtkblist->notebook); - if (accounts = gaim_accounts_get_all_active()) { + if ((accounts = gaim_accounts_get_all_active())) { g_list_free(accounts); gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1); } @@ -4178,6 +4179,9 @@ sep = gtk_hseparator_new(); gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sep, FALSE, FALSE, 0); + + gtkblist->scrollbook = gtk_gaim_scroll_book_new(); + gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->scrollbook, FALSE, FALSE, 0); /* Create an empty vbox used for showing connection errors */ gtkblist->error_buttons = gtk_vbox_new(FALSE, 0); @@ -4278,6 +4282,8 @@ gtkblist, GAIM_CALLBACK(conversation_deleting_cb), gtkblist); + gtk_widget_hide(gtkblist->scrollbook); + /* emit our created signal */ gaim_signal_emit(handle, "gtkblist-created", list); } @@ -5497,7 +5503,12 @@ gaim_debug_info("gtkblist", "removed visibility manager: %d\n", visibility_manager_count); } +void gaim_gtk_blist_add_alert(GtkWidget *widget) +{ + gtk_container_add(GTK_CONTAINER(gtkblist->scrollbook), widget); +} + static GaimBlistUiOps blist_ui_ops = { gaim_gtk_blist_new_list, Modified: trunk/gtk/gtkblist.h =================================================================== --- trunk/gtk/gtkblist.h 2006-11-22 21:33:51 UTC (rev 17814) +++ trunk/gtk/gtkblist.h 2006-11-23 08:37:07 UTC (rev 17815) @@ -95,6 +95,9 @@ GList *tooltipdata; /**< The data for each "chunk" of the tooltip */ GaimBlistNode *selected_node; /**< The currently selected node */ + + GtkWidget *scrollbook; /**< Scrollbook for alerts */ + GtkWidget *error_buttons; /**< Box containing the connection error buttons */ GtkWidget *statusbox; /**< The status selector dropdown */ }; @@ -202,7 +205,14 @@ */ void gaim_gtk_blist_visibility_manager_remove(void); +/** + * Adds a mini-alert to the blist scrollbook + * + * @param widget The widget to add + */ +void gaim_gtk_blist_add_alert(GtkWidget *widget); + /************************************************************************** * @name GTK+ Buddy List sorting functions **************************************************************************/ Added: trunk/gtk/gtkscrollbook.c =================================================================== --- trunk/gtk/gtkscrollbook.c (rev 0) +++ trunk/gtk/gtkscrollbook.c 2006-11-23 08:37:07 UTC (rev 17815) @@ -0,0 +1,198 @@ +/* + * @file gtkscrollbook.c GTK+ Status Selection Widget + * @ingroup gtkui + * + * gaim + * + * Gaim is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "gtkscrollbook.h" + + +static void gtk_gaim_scroll_book_init (GtkGaimScrollBook *scroll_book); +static void gtk_gaim_scroll_book_class_init (GtkGaimScrollBookClass *klass); + +GType +gtk_gaim_scroll_book_get_type (void) +{ + static GType scroll_book_type = 0; + + if (!scroll_book_type) + { + static const GTypeInfo scroll_book_info = + { + sizeof (GtkGaimScrollBookClass), + NULL, /* base_init */ + NULL, /* base_finalize */ + (GClassInitFunc) gtk_gaim_scroll_book_class_init, + NULL, /* class_finalize */ + NULL, /* class_data */ + sizeof (GtkGaimScrollBook), + 0, + (GInstanceInitFunc) gtk_gaim_scroll_book_init, + NULL /* value_table */ + }; + + scroll_book_type = g_type_register_static(GTK_TYPE_VBOX, + "GtkGaimScrollBook", + &scroll_book_info, + 0); + } + + return scroll_book_type; +} + +static void +scroll_left_cb(GtkGaimScrollBook *scroll_book) +{ + int index; + index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); + + if (index > 0) + gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), index - 1); +} + +static void +scroll_right_cb(GtkGaimScrollBook *scroll_book) +{ + int index, count; + index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); +#if GTK_CHECK_VERSION(2,2,0) + count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); +#else + count = g_list_length(GTK_NOTEBOOK(scroll_book->notebook)->children); +#endif + + if (index + 1 < count) + gtk_notebook_set_current_page(GTK_NOTEBOOK(scroll_book->notebook), index + 1); +} + +static void +refresh_scroll_box(GtkGaimScrollBook *scroll_book, int index, int count) +{ + char *label; + + gtk_widget_show_all(scroll_book); + if (count <= 1) + gtk_widget_hide(GTK_WIDGET(scroll_book->hbox)); + else + gtk_widget_show_all(GTK_WIDGET(scroll_book->hbox)); + + + label = g_strdup_printf("<span size='smaller' weight='bold'>(%d/%d)</span>", index+1, count); + gtk_label_set_markup(GTK_LABEL(scroll_book->label), label); + g_free(label); + + if (index == 0) + gtk_widget_set_sensitive(scroll_book->left_arrow, FALSE); + else + gtk_widget_set_sensitive(scroll_book->left_arrow, TRUE); + + + if (index +1== count) + gtk_widget_set_sensitive(scroll_book->right_arrow, FALSE); + else + gtk_widget_set_sensitive(scroll_book->right_arrow, TRUE); +} + + +static void +page_count_change_cb(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, GtkGaimScrollBook *scroll_book) +{ + int index = gtk_notebook_get_current_page(GTK_NOTEBOOK(scroll_book->notebook)); +#if GTK_CHECK_VERSION(2,2,0) + int count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); +#else + count = g_list_length(GTK_NOTEBOOK(scroll_book->notebook)->children); +#endif + refresh_scroll_box(scroll_book, index, count); + +} + +static void +switch_page_cb(GtkNotebook *notebook, GtkNotebookPage *page, guint page_num, GtkGaimScrollBook *scroll_book) +{ +#if GTK_CHECK_VERSION(2,2,0) + int count = gtk_notebook_get_n_pages(GTK_NOTEBOOK(scroll_book->notebook)); +#else + count = g_list_length(GTK_NOTEBOOK(scroll_book->notebook)->children); +#endif + refresh_scroll_box(scroll_book, page_num, count); +} + +static void +gtk_gaim_scroll_book_add(GtkContainer *container, GtkWidget *widget) +{ + gtk_widget_show(widget); + gtk_notebook_append_page(GTK_NOTEBOOK(GTK_GAIM_SCROLL_BOOK(container)->notebook), widget, NULL); +} + +static void +gtk_gaim_scroll_book_class_init (GtkGaimScrollBookClass *klass) +{ + GtkContainerClass *container_class = (GtkContainerClass*)klass; + + container_class->add = gtk_gaim_scroll_book_add; + +} + +static void +gtk_gaim_scroll_book_init (GtkGaimScrollBook *scroll_book) +{ + GtkWidget *eb; + + scroll_book->hbox = gtk_hbox_new(FALSE, 0); + + eb = gtk_event_box_new(); + gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0); + scroll_book->right_arrow = gtk_arrow_new(GTK_ARROW_RIGHT, GTK_SHADOW_NONE); + gtk_container_add(GTK_CONTAINER(eb), scroll_book->right_arrow); + g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_right_cb), scroll_book); + + scroll_book->label = gtk_label_new(NULL); + gtk_box_pack_end(GTK_BOX(scroll_book->hbox), scroll_book->label, FALSE, FALSE, 0); + + eb = gtk_event_box_new(); + gtk_box_pack_end(GTK_BOX(scroll_book->hbox), eb, FALSE, FALSE, 0); + scroll_book->left_arrow = gtk_arrow_new(GTK_ARROW_LEFT, GTK_SHADOW_NONE); + gtk_container_add(GTK_CONTAINER(eb), scroll_book->left_arrow); + g_signal_connect_swapped(G_OBJECT(eb), "button-press-event", G_CALLBACK(scroll_left_cb), scroll_book); + + gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->hbox, FALSE, FALSE, 0); + + scroll_book->notebook = gtk_notebook_new(); + gtk_notebook_set_show_tabs(GTK_NOTEBOOK(scroll_book->notebook), FALSE); + gtk_notebook_set_show_border(GTK_NOTEBOOK(scroll_book->notebook), FALSE); + + gtk_box_pack_start(GTK_BOX(scroll_book), scroll_book->notebook, TRUE, TRUE, 0); + + g_signal_connect(G_OBJECT(scroll_book->notebook), "page-added", G_CALLBACK(page_count_change_cb), scroll_book); + g_signal_connect(G_OBJECT(scroll_book->notebook), "page-removed", G_CALLBACK(page_count_change_cb), scroll_book); + g_signal_connect(G_OBJECT(scroll_book->notebook), "switch-page", G_CALLBACK(switch_page_cb), scroll_book); + gtk_widget_hide(scroll_book->hbox); +} + + + +GtkWidget * +gtk_gaim_scroll_book_new() +{ + return g_object_new(GTK_GAIM_TYPE_SCROLL_BOOK, NULL); +} Property changes on: trunk/gtk/gtkscrollbook.c ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: trunk/gtk/gtkscrollbook.h =================================================================== --- trunk/gtk/gtkscrollbook.h (rev 0) +++ trunk/gtk/gtkscrollbook.h 2006-11-23 08:37:07 UTC (rev 17815) @@ -0,0 +1,80 @@ +/* + * @file gtkscrollbook GTK+ Scrolling notebook Widget + * @ingroup gtkui + * + * gaim + * + * Gaim is the legal property of its developers, whose names are too numerous + * to list here. Please refer to the COPYRIGHT file distributed with this + * source distribution. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __GTK_GAIM_SCROLL_BOOK_H__ +#define __GTK_GAIM_SCROLL_BOOK_H__ + +#include <gtk/gtk.h> + + +G_BEGIN_DECLS + +#define GTK_GAIM_TYPE_SCROLL_BOOK (gtk_gaim_scroll_book_get_type ()) +#define GTK_GAIM_SCROLL_BOOK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_GAIM_TYPE_SCROLL_BOOK, GtkGaimScrollBook)) +#define GTK_GAIM_SCROLL_BOOK_CLASS(vtable) (G_TYPE_CHECK_CLASS_CAST ((vtable), GTK_GAIM_TYPE_SCROLL_BOOK, GtkGaimScrollBookClass)) +#define GTK_GAIM_IS_SCROLL_BOOK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_GAIM_TYPE_SCROLL_BOOK)) +#define GTK_GAIM_IS_SCROLL_BOOK_CLASS(vtable) (G_TYPE_CHECK_CLASS_TYPE ((vtable), GTK_GAIM_TYPE_SCROLL_BOOK)) +#define GTK_GAIM_SCROLL_BOOK_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), GTK_GAIM_TYPE_SCROLL_BOOK, GtkGaimScrollBookClass)) + +typedef struct _GtkGaimScrollBook GtkGaimScrollBook; +typedef struct _GtkGaimScrollBookClass GtkGaimScrollBookClass; + +struct _GtkGaimScrollBook +{ + GtkVBox parent_instance; + + GtkWidget *notebook; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *left_arrow; + GtkWidget *right_arrow; + + /* Padding for future expansion */ + void (*_gtk_reserved0) (void); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); + +}; + + +struct _GtkGaimScrollBookClass +{ + GtkComboBoxClass parent_class; + + /* Padding for future expansion */ + void (*_gtk_reserved0) (void); + void (*_gtk_reserved1) (void); + void (*_gtk_reserved2) (void); + void (*_gtk_reserved3) (void); +}; + + +GType gtk_gaim_scroll_book_get_type (void) G_GNUC_CONST; +GtkWidget *gtk_gaim_scroll_book_new (void); + +G_END_DECLS + +#endif /* __GTK_GAIM_SCROLL_BOOK_H__ */ Property changes on: trunk/gtk/gtkscrollbook.h ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: trunk/gtk/gtkutils.c =================================================================== --- trunk/gtk/gtkutils.c 2006-11-22 21:33:51 UTC (rev 17814) +++ trunk/gtk/gtkutils.c 2006-11-23 08:37:07 UTC (rev 17815) @@ -2851,3 +2851,114 @@ return ret; } + +GSList *minidialogs = NULL; + +static void * +gaim_gtk_utils_get_handle() +{ + static int handle; + + return &handle; +} + +static void connection_signed_off_cb(GaimConnection *gc) +{ + GSList *list; + for (list = minidialogs; list; list = list->next) { + if (g_object_get_data(G_OBJECT(list->data), "gc") == gc) { + gtk_widget_destroy(GTK_WIDGET(list->data)); + } + } +} + +static void alert_killed_cb(GtkWidget *widget) +{ + minidialogs = g_slist_remove(minidialogs, widget); +} + +void *gaim_gtk_make_mini_dialog(GaimConnection *gc, const char *icon_name, + const char *primary, const char *secondary, + void *user_data, ...) +{ + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *bbox; + GtkWidget *label; + GtkWidget *button; + GtkWidget *img = NULL; + char label_text[2048]; + const char *button_text; + GCallback callback; + char *primary_esc, *secondary_esc; + va_list args; + static gboolean first_call = TRUE; + + img = gtk_image_new_from_stock(icon_name, GTK_ICON_SIZE_BUTTON); + gtk_misc_set_alignment(GTK_MISC(img), 0, 0); + + vbox = gtk_vbox_new(FALSE,0); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); + + g_object_set_data(G_OBJECT(vbox), "gc" ,gc); + minidialogs = g_slist_prepend(minidialogs, vbox); + g_signal_connect(G_OBJECT(vbox), "destroy", G_CALLBACK(alert_killed_cb), NULL); + + if (first_call) { + first_call = FALSE; + gaim_signal_connect(gaim_connections_get_handle(), "signed-off", + gaim_gtk_utils_get_handle(), + GAIM_CALLBACK(connection_signed_off_cb), NULL); + } + + hbox = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(vbox), hbox); + + if (img != NULL) + gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); + + primary_esc = g_markup_escape_text(primary, -1); + + if (secondary) + secondary_esc = g_markup_escape_text(secondary, -1); + g_snprintf(label_text, sizeof(label_text), + "<span weight=\"bold\" size=\"smaller\">%s</span>%s<span size=\"smaller\">%s</span>", + primary_esc, secondary ? "\n" : "", secondary?secondary_esc:""); + g_free(primary_esc); + label = gtk_label_new(NULL); + gtk_widget_modify_text(vbox, GTK_STATE_NORMAL, &(label->style->white)); + gtk_label_set_markup(GTK_LABEL(label), label_text); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); +#if GTK_CHECK_VERSION(2,6,0) + g_object_set(label, "ellipsize", PANGO_ELLIPSIZE_END, NULL); +#endif + + bbox = gtk_hbutton_box_new(); + gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); + gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); + gtk_box_set_spacing(GTK_BOX(bbox), 6); + + va_start(args, user_data); + while ((button_text = va_arg(args, char*))) { + callback = va_arg(args, GCallback); + button = gtk_button_new(); + gtk_container_set_border_width(GTK_CONTAINER(button), 0); + if (callback) + g_signal_connect_swapped(G_OBJECT(button), "clicked", callback, user_data); + g_signal_connect_swapped(G_OBJECT(button), "clicked", G_CALLBACK(gtk_widget_destroy), vbox); + hbox = gtk_hbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(button), hbox); + g_snprintf(label_text, sizeof(label_text), + "<span size=\"smaller\">%s</span>", button_text); + label = gtk_label_new(NULL); + gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), label_text); + gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); + gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0); + gtk_container_add(GTK_CONTAINER(bbox), button); + } + va_end(args); + + return vbox; +} Modified: trunk/gtk/gtkutils.h =================================================================== --- trunk/gtk/gtkutils.h 2006-11-22 21:33:51 UTC (rev 17814) +++ trunk/gtk/gtkutils.h 2006-11-23 08:37:07 UTC (rev 17815) @@ -510,3 +510,16 @@ * @return A newly allocated string with unicode arrow characters */ char *gaim_gtk_make_pretty_arrows(const char *str); + +/** + * Creates a "mini-dialog" suitable for embedding in the buddy list scrollbook + * + * @param handle A handle + * @param primary The primary text + * @param secondary The secondary text + * @param user_data Data to pass to the callbacks + * @param ... a NULL-terminated list of button labels and callbacks + */ +void *gaim_gtk_make_mini_dialog(GaimConnection *handle, const char* stock_id, + const char *primary, const char *secondary, + void *user_data, ...); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-22 21:33:54
|
Revision: 17814 http://svn.sourceforge.net/gaim/?rev=17814&view=rev Author: seanegan Date: 2006-11-22 13:33:51 -0800 (Wed, 22 Nov 2006) Log Message: ----------- Make searching in conversations search backwards. Presumingly you want to see the most recent mentions of your search term first. I use it mostly for searching my nick when I See a blue tab in #gaim, and this is useful for that. Modified Paths: -------------- trunk/gtk/gtkimhtml.c Modified: trunk/gtk/gtkimhtml.c =================================================================== --- trunk/gtk/gtkimhtml.c 2006-11-22 20:10:01 UTC (rev 17813) +++ trunk/gtk/gtkimhtml.c 2006-11-22 21:33:51 UTC (rev 17814) @@ -3550,24 +3550,24 @@ gtk_imhtml_search_clear(imhtml); g_free(imhtml->search_string); imhtml->search_string = g_strdup(text); - gtk_text_buffer_get_start_iter(imhtml->text_buffer, &iter); + gtk_text_buffer_get_end_iter(imhtml->text_buffer, &iter); } else { gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, start_mark); } - if (gtk_source_iter_forward_search(&iter, imhtml->search_string, + if (gtk_source_iter_backward_search(&iter, imhtml->search_string, GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_CASE_INSENSITIVE, &start, &end, NULL)) { gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(imhtml), &start, 0, TRUE, 0, 0); - gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &end, FALSE); + gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &start, FALSE); if (new_search) { gtk_text_buffer_remove_tag_by_name(imhtml->text_buffer, "search", &iter, &end); do gtk_text_buffer_apply_tag_by_name(imhtml->text_buffer, "search", &start, &end); - while (gtk_source_iter_forward_search(&end, imhtml->search_string, + while (gtk_source_iter_backward_search(&start, imhtml->search_string, GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_CASE_INSENSITIVE, &start, &end, NULL)); @@ -3577,14 +3577,14 @@ else if (!new_search) { /* We hit the end, so start at the beginning again. */ - gtk_text_buffer_get_start_iter(imhtml->text_buffer, &iter); + gtk_text_buffer_get_end_iter(imhtml->text_buffer, &iter); - if (gtk_source_iter_forward_search(&iter, imhtml->search_string, + if (gtk_source_iter_backward_search(&iter, imhtml->search_string, GTK_SOURCE_SEARCH_VISIBLE_ONLY | GTK_SOURCE_SEARCH_CASE_INSENSITIVE, &start, &end, NULL)) { gtk_text_view_scroll_to_iter(GTK_TEXT_VIEW(imhtml), &start, 0, TRUE, 0, 0); - gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &end, FALSE); + gtk_text_buffer_create_mark(imhtml->text_buffer, "search", &start, FALSE); return TRUE; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nos...@us...> - 2006-11-22 20:10:24
|
Revision: 17813 http://svn.sourceforge.net/gaim/?rev=17813&view=rev Author: nosnilmot Date: 2006-11-22 12:10:01 -0800 (Wed, 22 Nov 2006) Log Message: ----------- Don't crash when getting info on someone on jabber with no resource name Modified Paths: -------------- trunk/libgaim/protocols/jabber/buddy.c Modified: trunk/libgaim/protocols/jabber/buddy.c =================================================================== --- trunk/libgaim/protocols/jabber/buddy.c 2006-11-22 18:47:42 UTC (rev 17812) +++ trunk/libgaim/protocols/jabber/buddy.c 2006-11-22 20:10:01 UTC (rev 17813) @@ -602,7 +602,7 @@ GString *info_text; char *resource_name; JabberBuddyResource *jbr; - JabberBuddyInfoResource *jbir; + JabberBuddyInfoResource *jbir = NULL; GList *resources; /* not yet */ @@ -650,8 +650,9 @@ jbr = resources->data; if(jbr->status) purdy = gaim_strdup_withhtml(jbr->status); - g_string_append_printf(info_text, "<b>%s:</b> %s<br/>", - _("Resource"), jbr->name); + if(jbr->name) + g_string_append_printf(info_text, "<b>%s:</b> %s<br/>", + _("Resource"), jbr->name); g_string_append_printf(info_text, "<b>%s:</b> %d<br/>", _("Priority"), jbr->priority); g_string_append_printf(info_text, "<b>%s:</b> %s%s%s<br/>", @@ -661,7 +662,9 @@ if(purdy) g_free(purdy); - jbir = g_hash_table_lookup(jbi->resources, jbr->name); + if(jbr->name) + jbir = g_hash_table_lookup(jbi->resources, jbr->name); + if(jbir) { if(jbir->idle_seconds > 0) { g_string_append_printf(info_text, "<b>%s:</b> %s<br/>", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-22 19:38:09
|
Revision: 17812 http://svn.sourceforge.net/gaim/?rev=17812&view=rev Author: seanegan Date: 2006-11-22 10:47:42 -0800 (Wed, 22 Nov 2006) Log Message: ----------- fix this leak too Modified Paths: -------------- trunk/gtk/gtkblist.c Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-11-22 18:40:11 UTC (rev 17811) +++ trunk/gtk/gtkblist.c 2006-11-22 18:47:42 UTC (rev 17812) @@ -3945,6 +3945,7 @@ GtkWidget *sw; GtkWidget *sep; GtkWidget *label; + GList *accounts; char *pretty; GtkAccelGroup *accel_group; GtkTreeSelection *selection; @@ -4029,8 +4030,10 @@ gtkblist->vbox = gtk_vbox_new(FALSE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), gtkblist->vbox, NULL); gtk_widget_show_all(gtkblist->notebook); - if (gaim_accounts_get_all_active()) + if (accounts = gaim_accounts_get_all_active()) { + g_list_free(accounts); gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1); + } /****************************** GtkTreeView **********************************/ sw = gtk_scrolled_window_new(NULL,NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-22 18:40:12
|
Revision: 17811 http://svn.sourceforge.net/gaim/?rev=17811&view=rev Author: seanegan Date: 2006-11-22 10:40:11 -0800 (Wed, 22 Nov 2006) Log Message: ----------- I wanted to make networkmanager detection of disconnected networks just send keepalives as not to kill the connection if it doesn't have to Modified Paths: -------------- trunk/gtk/gtkconn.c Modified: trunk/gtk/gtkconn.c =================================================================== --- trunk/gtk/gtkconn.c 2006-11-22 18:16:51 UTC (rev 17810) +++ trunk/gtk/gtkconn.c 2006-11-22 18:40:11 UTC (rev 17811) @@ -214,14 +214,25 @@ { GList *l = gaim_accounts_get_all_active(); GaimGtkBuddyList *gtkblist = gaim_gtk_blist_get_default_gtk_blist(); - + GaimPluginProtocolInfo *prpl_info = NULL; + GaimConnection *gc = NULL; + if(gtkblist) gtk_gaim_status_box_set_network_available(GTK_GAIM_STATUS_BOX(gtkblist->statusbox), FALSE); while (l) { GaimAccount *a = (GaimAccount*)l->data; - if (!gaim_account_is_disconnected(a)) - gaim_account_disconnect(a); + if (!gaim_account_is_disconnected(a)) { + gc = gaim_account_get_connection(a); + if (gc && gc->prpl) + prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); + if (prpl_info) { + if (prpl_info->keepalive) + prpl_info->keepalive(gc); + else + gaim_account_disconnect(a); + } + } l = l->next; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sea...@us...> - 2006-11-22 18:16:54
|
Revision: 17810 http://svn.sourceforge.net/gaim/?rev=17810&view=rev Author: seanegan Date: 2006-11-22 10:16:51 -0800 (Wed, 22 Nov 2006) Log Message: ----------- fixed Modified Paths: -------------- trunk/gtk/gtkblist.c Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-11-22 18:15:01 UTC (rev 17809) +++ trunk/gtk/gtkblist.c 2006-11-22 18:16:51 UTC (rev 17810) @@ -4029,8 +4029,9 @@ gtkblist->vbox = gtk_vbox_new(FALSE, 0); gtk_notebook_append_page(GTK_NOTEBOOK(gtkblist->notebook), gtkblist->vbox, NULL); gtk_widget_show_all(gtkblist->notebook); + if (gaim_accounts_get_all_active()) + gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1); - /****************************** GtkTreeView **********************************/ sw = gtk_scrolled_window_new(NULL,NULL); gtk_widget_show(sw); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sa...@us...> - 2006-11-22 18:15:10
|
Revision: 17809 http://svn.sourceforge.net/gaim/?rev=17809&view=rev Author: sadrul Date: 2006-11-22 10:15:01 -0800 (Wed, 22 Nov 2006) Log Message: ----------- Unleak Modified Paths: -------------- trunk/gtk/gtkblist.c Modified: trunk/gtk/gtkblist.c =================================================================== --- trunk/gtk/gtkblist.c 2006-11-22 15:50:27 UTC (rev 17808) +++ trunk/gtk/gtkblist.c 2006-11-22 18:15:01 UTC (rev 17809) @@ -3727,12 +3727,14 @@ static void account_modified(GaimAccount *account, GaimGtkBuddyList *gtkblist) { + GList *list; if (!gtkblist) return; - if (gaim_accounts_get_all_active()) + if ((list = gaim_accounts_get_all_active()) != NULL) { gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 1); - else + g_list_free(list); + } else gtk_notebook_set_current_page(GTK_NOTEBOOK(gtkblist->notebook), 0); update_menu_bar(gtkblist); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |