From 16130aacc7fcd9e6e1f89a12e3640320285c5ffb Mon Sep 17 00:00:00 2001 From: Wen-Yen Chuang Date: Mon, 9 Jan 2012 15:13:49 +0800 Subject: [PATCH] * l3afpad-0.8.18.1.7 --- .gitignore | 0 ChangeLog | 6 +++-- SHA1SUMS | 44 +++++++++++++++--------------- config.h.in | 3 +++ configure | 32 +++++++++++++++------- configure.ac | 8 +++++- src/l3afpad.h | 4 +++ src/search.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/utils.c | 59 ++++++++++++++++++++++++++++++++++++++++ src/utils.h | 4 +++ 10 files changed, 200 insertions(+), 34 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/ChangeLog b/ChangeLog index 6305fdf..8e178d0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ -2011-12-27 +2012-01-09 - version UNRELEASED: + version 0.8.18.1.7: + * Support search and replace history and + option: --disable-search-history * Updated Japanese translation (Toshiharu Kudoh). * Updated Russian translation (Aleksej Perepyolkin). * Make everything compatible with gcc -std=c1x diff --git a/SHA1SUMS b/SHA1SUMS index aac112f..4376098 100644 --- a/SHA1SUMS +++ b/SHA1SUMS @@ -2,15 +2,15 @@ Hash: SHA1,SHA512 634071380936e4893b0e8cacdfcd344638406575 171 AUTHORS -41064a7f3d01661f5de5cfee2345e3e9c6a8136a 9961 ChangeLog +9ff029efada108641f205078add0829f44b861a7 10039 ChangeLog 0beb31ee37259edeb621d345db933f2c827b2a21 22 Makefile.am 32ae3f99a247e614dcad4cfb2156a8d992ab53d0 22228 Makefile.in 04dc937708d52f3b9b6f9a096898c5e23fb80ace 2071 README 2a4026c3eed929bfa5341fb5ea22a5e0f95a5fc4 66077 aclocal.m4 08e7ff6a0bc9382beae57974c3ac95c9ac565faa 3769 compile -9b95284d89fb2a7f4d32dfeb088573fc897192a0 2637 config.h.in -278bed4a56a4e09159a04f3b90c54007a309a9df 239424 configure -97f4ed00fab00e320d42d63b884ce63308c0d842 1921 configure.ac +7c5c2a0e918489ebb5817d0035e087a4ddc6ca3d 2709 config.h.in +ebaa7bea2f6acf203c53a9be0fa552a336b1e43e 239778 configure +100d8aa7b504824ec5b269245e9d25d3e21dabf9 2160 configure.ac cbd191104fbb3eda18bc12e1caa9e60db401a008 264 data/Makefile.am dd49d0ee0462718182658e33e8cb4aa8dddce9b8 19803 data/Makefile.in d5f3d29e0f768e7a48a9ab7bb7903aa123a72280 99 data/icons/128x128/Makefile.am @@ -140,38 +140,38 @@ f6b21adcfc00151deba02a4339ea5883a7b8f411 2486 src/hlight.c 828e51d43aaa64cbaa492baf761d053bba6b02dd 1019 src/hlight.h 65d41180e4ad4ffc8e15910f64cd1c659bc30aa2 6774 src/indent.c bb2a52d5a1969da5a312b91bbba32d0489a48871 1334 src/indent.h -f218290b77b711f5e2946c299c333725268128ce 3643 src/l3afpad.h +fee3226a54e807797560be5ee61cb8cd81a848c8 3699 src/l3afpad.h 5c7f1b15d14250641334d67af6768c6b66ae9450 7420 src/linenum.c 6f63e2c07f844c7ba97c77d3e7234d30560a09f0 983 src/linenum.h 5451aa9d991c54e57f2a23492830050320321f5a 8319 src/main.c 3c0259eda7028cfa574c29674235f5109f90526a 8751 src/menu.c cafed6cfdf79765fae8127d020d311c4842fdeba 1179 src/menu.h -e258f45dbf8b72e62f4cad204aaa1245c2d1cf0a 14745 src/search.c +13f187180f999117bc24911c47e55e070e34cc88 17350 src/search.c cee72ed3fd94d1637021e9c73602f109f7af06d1 1054 src/search.h 65fce9c9880a5cf6e73592bb67ad057e7832e73c 12595 src/selector.c 5af4e5fa14e8ab0106b07f15a74777124df098a8 1019 src/selector.h 609fd713cef54955274804dadd59d51fbc3e7aa4 10743 src/undo.c 13e3a08982c1aee8ea5bedb3e76ac33f3f161290 1211 src/undo.h -db205a5a6aa876fd5764a3ee1e4bdef8d82c2433 2746 src/utils.c -e700377b8a734da1fc62cde0e735ea3b0be3b3ff 1026 src/utils.h +26918883912f5f087e467d6ea8620db316cd9512 4155 src/utils.c +cd4f957aa8207021b04882574ecd1720b5069457 1166 src/utils.h 3e9703e4eee527e8db4b082aa4aa2eeb158e111b 11206 src/view.c f9797a035a29fe5e6f1137d20fb916c573bd1bea 1276 src/view.h bf524e4de2a68901495a91d181cf3573edd3027b 2532 src/window.c 75d1c79bfdd24b7ae5450ead4aef3ab43267e85f 1068 src/window.h -----BEGIN PGP SIGNATURE----- -iEYEARECAAYFAk75HM0ACgkQdEpXpumNYVnmpgCdHIOBWvLd5Bjb4DeocKpqabmW -Zn4AoIfSil8IV+v06CTsj/4Rky3BYEt3iQIcBAEBCgAGBQJO+RzNAAoJELc3H0m+ -i6gZs1gP/iF1siVF/ROcK6NREqF8lkSXopLUnsP6E6QZR71Bb1G+PEKLblehe5Jf -n/EOca+u56eGsJ0aPm+p8+Um9OJWb1/e/JP+4UdKQqKQGVGexQXlrOJ6ykHhOvWy -ASK1g0FDN2dkGcmfidJzifhEIeVw7xuxqwDRw/NFaaMpMGM0sCQEz3AbOdFNr5T/ -IRuahpR6qRdZRQn3SdqjiJ6HK3o68TsyjBsTomk8IWvTreOiGdMNrXZnEvkILxUT -lDcf92/HQ15pCpSlIrCGjR8JDym7v9JUU2szzV5ArK3M69+oiXyx2ex1Y8M2+nfc -mqyjqS4roaaTf5v5ajx7q29WNq1aC+2PNhPhINQwzwSmBy4DwUgs8PpMtC7ZGGtj -VOhpQvM52RD16Ea0fbkYnHWo7WbEA1ByB+jE2jfKbd/5G1+d2vHE0+tJNEXvVgh1 -WLEKRV6fdWR4geHvI97Qj6hAIniXrbQr/2BdeayYbfVIRALxyClibqqIyR1RZmmQ -QbqPZAKzU3tcu3fwgg8cxCJ8+BoC43PyWqKl71zWc/WcdWELSgX4nQhxJmesNhrP -Yfd4iEy+pu26m9shR3wp63BrxeTeiqVsaej+tfpwzCqoCQCm+1w2MkWzOe94iw/J -BCuv+7dWFYwET5A/rAWEsA+elMjegHmYRv37kHTPwji7rDnPn9TQ -=zo73 +iEYEARECAAYFAk8KiMkACgkQdEpXpumNYVkrpACeJDwi3t9a+Hpdon+0fzl9wSq+ +5ScAn2i28kW9VY50zT4AsIppEGO9OUQeiQIcBAEBCgAGBQJPCojJAAoJELc3H0m+ +i6gZDOcQAI0AsfAplCvjDiiWe7cR8o7moE9k1ci6nTO5qgjdOv1XT/u5dVnKbm73 +GlAKcDna5i2HKbaDddlaFSC0Oqy90tduiyeW2gU7WjX03NuHDg/cypCKhI4Mj7Jf +0OVP2Xb/hYj5cntx2FdgtER/UqGoCnVRhDTwpYN+MbVHa6Aoiyg6Wk5EkI5XX3vD +wUefokJL8tJeKhRQnh7wwVltQixk2jDHjnAh0olLnUxnxqsDTNlSso3ytKbGMtRO +fKx80cGkBo5VgrcT8wyf8qZR9qNbwL6aWEi/gD5ni96so7X/WdilfzLeCRmtZP6X +VIgEmzpyrX9wtouQRfJsW9jS4d5ppYn6Vf5Q0Z4MZsSNWvL2FFejoJTijvdRma80 +oBSb7MLtay6Kr70CMpRK05doCsXIt9qr/tsjxxOPfkmojX2pJr3jXpNvcCP3ULvj +Ks4cI0H4Pbf7l2zbqDvucXcq0o2gST8fG7gy2DH8GgkIvi0oZXd63v8ph0iQ9D5W +A6/UsDBHyJgEBoY8bAoyIYDzgzZD2OHoF0+/dPlTe9khVTpI2aebzEP+WwobgjJ/ +QxXylmDBnBZFBpHpmLbd8W/+9qiT9b8LDxzyB9mrz1tUbPLZ4PFQkxHYpOvg6ILr +kEA8lvL5K/uPaci+p37BGf7YdbWZTVx79V3rIZMhXhSLo/Yx5QYI +=IRBy -----END PGP SIGNATURE----- diff --git a/config.h.in b/config.h.in index 9379d83..b0b9056 100644 --- a/config.h.in +++ b/config.h.in @@ -84,6 +84,9 @@ /* Define to the version of this package. */ #undef PACKAGE_VERSION +/* Define to 0 if you disable search history. */ +#undef SEARCH_HISTORY + /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS diff --git a/configure b/configure index 29fb55e..adc7d76 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for L3afpad 0.8.18.1.6. +# Generated by GNU Autoconf 2.68 for L3afpad 0.8.18.1.7. # # Report bugs to . # @@ -560,8 +560,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='L3afpad' PACKAGE_TARNAME='l3afpad' -PACKAGE_VERSION='0.8.18.1.6' -PACKAGE_STRING='L3afpad 0.8.18.1.6' +PACKAGE_VERSION='0.8.18.1.7' +PACKAGE_STRING='L3afpad 0.8.18.1.7' PACKAGE_BUGREPORT='caleb@calno.com' PACKAGE_URL='' @@ -739,6 +739,7 @@ enable_largefile enable_dependency_tracking enable_nls enable_print +enable_search_history enable_statistics enable_xinput2 enable_emacs @@ -1300,7 +1301,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures L3afpad 0.8.18.1.6 to adapt to many kinds of systems. +\`configure' configures L3afpad 0.8.18.1.7 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1366,7 +1367,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of L3afpad 0.8.18.1.6:";; + short | recursive ) echo "Configuration of L3afpad 0.8.18.1.7:";; esac cat <<\_ACEOF @@ -1379,6 +1380,8 @@ Optional Features: --enable-dependency-tracking do not reject slow dependency extractors --disable-nls do not use Native Language Support --disable-print force to disable print feature + --disable-search-history + force to disable search history --disable-statistics force to disable statistics --disable-xinput2 force to disable Xinput2 --enable-emacs implement Emacs key theme (experimental) @@ -1467,7 +1470,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -L3afpad configure 0.8.18.1.6 +L3afpad configure 0.8.18.1.7 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. @@ -1836,7 +1839,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by L3afpad $as_me 0.8.18.1.6, which was +It was created by L3afpad $as_me 0.8.18.1.7, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ @@ -5449,6 +5452,17 @@ $as_echo "#define ENABLE_PRINT 0" >>confdefs.h fi +# Check whether --enable-search-history was given. +if test "${enable_search_history+set}" = set; then : + enableval=$enable_search_history; +fi + + if test "$enable_search_history" = "no"; then + +$as_echo "#define SEARCH_HISTORY 0" >>confdefs.h + + fi + # Check whether --enable-statistics was given. if test "${enable_statistics+set}" = set; then : enableval=$enable_statistics; @@ -7165,7 +7179,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by L3afpad $as_me 0.8.18.1.6, which was +This file was extended by L3afpad $as_me 0.8.18.1.7, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7231,7 +7245,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -L3afpad config.status 0.8.18.1.6 +L3afpad config.status 0.8.18.1.7 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index aed4455..9d7dec9 100644 --- a/configure.ac +++ b/configure.ac @@ -1,4 +1,4 @@ -AC_INIT(L3afpad, 0.8.18.1.6, caleb@calno.com) +AC_INIT(L3afpad, 0.8.18.1.7, caleb@calno.com) AM_INIT_AUTOMAKE($PACKAGE_TARNAME, $PACKAGE_VERSION) AM_CONFIG_HEADER(config.h) AC_SYS_LARGEFILE @@ -17,6 +17,12 @@ AC_ARG_ENABLE(print, AC_DEFINE(ENABLE_PRINT, 0, [Define to 0 if you disable print.]) fi +AC_ARG_ENABLE(search-history, + AC_HELP_STRING([--disable-search-history], [force to disable search history])) + if test "$enable_search_history" = "no"; then + AC_DEFINE(SEARCH_HISTORY, 0, [Define to 0 if you disable search history.]) + fi + AC_ARG_ENABLE(statistics, AC_HELP_STRING([--disable-statistics], [force to disable statistics])) if test "$enable_statistics" = "no"; then diff --git a/src/l3afpad.h b/src/l3afpad.h index a5f5c5c..2eceae3 100644 --- a/src/l3afpad.h +++ b/src/l3afpad.h @@ -31,6 +31,10 @@ #define ENABLE_PRINT 1 #endif +#ifndef SEARCH_HISTORY +#define SEARCH_HISTORY 1 +#endif + #ifndef ENABLE_STATISTICS #define ENABLE_STATISTICS 1 #endif diff --git a/src/search.c b/src/search.c index 9cfac7e..a94a208 100644 --- a/src/search.c +++ b/src/search.c @@ -22,6 +22,10 @@ #include "l3afpad.h" #include "gtksourceiter.h" +#if SEARCH_HISTORY +static GList *find_history; +static GList *replace_history; +#endif static gchar *string_find = NULL; static gchar *string_replace = NULL; static gboolean match_case, replace_all;//, replace_mode = FALSE; @@ -246,6 +250,7 @@ static gint document_replace_real(GtkWidget *textview) } +#if !SEARCH_HISTORY static gint entry_len; static void toggle_sensitivity(GtkWidget *w, gint pos1, gint pos2, gint *pos3) @@ -263,6 +268,17 @@ static void toggle_sensitivity(GtkWidget *w, gint pos1, gint pos2, gint *pos3) GTK_RESPONSE_OK, FALSE); } } +#endif /* !SEARCH_HISTORY */ + +#if SEARCH_HISTORY +static void toggle_sensitivity(GtkWidget *entry) +{ + gboolean has_text = *(gtk_entry_get_text(GTK_ENTRY(entry))) != '\0'; + gtk_dialog_set_response_sensitive( + GTK_DIALOG(gtk_widget_get_toplevel(entry)), GTK_RESPONSE_OK, + (has_text) ? TRUE : FALSE); +} +#endif static void toggle_check_case(GtkWidget *widget) { @@ -279,6 +295,11 @@ gint run_dialog_search(GtkWidget *textview, gint mode) GtkWidget *dialog; GtkWidget *table; GtkWidget *label_find, *label_replace; +#if SEARCH_HISTORY + GtkWidget *combo_find, *combo_replace = NULL; + GtkTextBuffer *buffer; + GtkTextIter start_iter, end_iter; +#endif GtkWidget *entry_find, *entry_replace = NULL; GtkWidget *check_case, *check_all; gint res; @@ -306,9 +327,16 @@ gint run_dialog_search(GtkWidget *textview, gint mode) label_find = gtk_label_new_with_mnemonic(_("Fi_nd what:")); gtk_misc_set_alignment(GTK_MISC(label_find), 0, 0.5); gtk_table_attach_defaults(GTK_TABLE(table), label_find, 0, 1, 0, 1); +#if SEARCH_HISTORY + combo_find = create_combo_with_history (&find_history); + gtk_table_attach_defaults(GTK_TABLE(table), combo_find, 1, 2, 0, 1); + entry_find = gtk_bin_get_child(GTK_BIN(combo_find)); +#else entry_find = gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table), entry_find, 1, 2, 0, 1); +#endif gtk_label_set_mnemonic_widget(GTK_LABEL(label_find), entry_find); +#if !SEARCH_HISTORY gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, FALSE); entry_len = 0; @@ -321,10 +349,37 @@ gint run_dialog_search(GtkWidget *textview, gint mode) gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK, TRUE); } +#endif +#if SEARCH_HISTORY + gtk_entry_set_activates_default(GTK_ENTRY(entry_find), TRUE); + g_signal_connect_after(G_OBJECT(entry_find), "insert-text", + G_CALLBACK(toggle_sensitivity), NULL); + g_signal_connect_after(G_OBJECT(entry_find), "delete-text", + G_CALLBACK(toggle_sensitivity), NULL); + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview)); + if (gtk_text_buffer_get_selection_bounds (buffer, &start_iter, &end_iter)) { + if (string_find != NULL) + g_free(string_find); + string_find = gtk_text_buffer_get_text (buffer, &start_iter, &end_iter, + FALSE); + gtk_entry_set_text(GTK_ENTRY(entry_find), string_find); + gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), + GTK_RESPONSE_OK, TRUE); + } + else + gtk_entry_set_text(GTK_ENTRY(entry_find), ""); +#endif if (mode) { label_replace = gtk_label_new_with_mnemonic(_("Re_place with:")); gtk_misc_set_alignment(GTK_MISC(label_replace), 0, 0.5); gtk_table_attach_defaults(GTK_TABLE(table), label_replace, 0, 1, 1, 2); +#if SEARCH_HISTORY + combo_replace = create_combo_with_history (&replace_history); + gtk_table_attach_defaults(GTK_TABLE(table), combo_replace, 1, 2, 1, 2); + entry_replace = gtk_bin_get_child(GTK_BIN(combo_replace)); + gtk_label_set_mnemonic_widget(GTK_LABEL(label_replace), entry_replace); + gtk_entry_set_text(GTK_ENTRY(entry_replace), ""); +#else entry_replace = gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table), entry_replace, 1, 2, 1, 2); gtk_label_set_mnemonic_widget(GTK_LABEL(label_replace), entry_replace); @@ -334,26 +389,45 @@ gint run_dialog_search(GtkWidget *textview, gint mode) gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); gtk_entry_set_activates_default(GTK_ENTRY(entry_find), TRUE); if (mode) +#endif gtk_entry_set_activates_default(GTK_ENTRY(entry_replace), TRUE); +#if !SEARCH_HISTORY check_case = gtk_check_button_new_with_mnemonic(_("_Match case")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_case), match_case); g_signal_connect(check_case, "toggled", G_CALLBACK(toggle_check_case), NULL); gtk_table_attach_defaults (GTK_TABLE(table), check_case, 0, 2, 1 + mode, 2 + mode); if (mode) { +#endif check_all = gtk_check_button_new_with_mnemonic(_("Replace _all at once")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_all), replace_all); g_signal_connect(check_all, "toggled", G_CALLBACK(toggle_check_all), NULL); gtk_table_attach_defaults(GTK_TABLE(table), check_all, 0, 2, 2 + mode, 3 + mode); } +#if SEARCH_HISTORY + gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK); + toggle_sensitivity (entry_find); + check_case = gtk_check_button_new_with_mnemonic(_("_Match case")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_case), match_case); + g_signal_connect(check_case, "toggled", G_CALLBACK(toggle_check_case), NULL); + gtk_table_attach_defaults (GTK_TABLE(table), check_case, 0, 2, 1 + mode, 2 + mode); +#endif gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); gtk_widget_show_all(table); res = gtk_dialog_run(GTK_DIALOG(dialog)); if (res == GTK_RESPONSE_OK) { +#if SEARCH_HISTORY + update_combo_data (entry_find, &find_history); + if (string_find != NULL) +#endif g_free(string_find); string_find = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry_find))); if (mode) { +#if SEARCH_HISTORY + update_combo_data (entry_replace, &replace_history); + if (string_replace != NULL) +#endif g_free(string_replace); string_replace = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry_replace))); } diff --git a/src/utils.c b/src/utils.c index d726f97..e884942 100644 --- a/src/utils.c +++ b/src/utils.c @@ -104,3 +104,62 @@ GtkWidget *create_button_with_stock_image(const gchar *text, const gchar *stock_ return button; } + +#if SEARCH_HISTORY +void update_combo_data (GtkWidget *entry, GList **history) +{ + const gchar *text; + GList *node; + + text = gtk_entry_get_text (GTK_ENTRY (entry)); + if (*text == '\0') + return; + for (node = *history; node != NULL; node = g_list_next (node)) + { + if (g_str_equal ((gchar *)node->data, text)) + { + g_free (node->data); + *history = g_list_delete_link (*history, node); + break; + } + } + *history = g_list_prepend (*history, g_strdup (text)); +} + +GtkWidget *create_combo_with_history (GList **history) +{ + GtkWidget *combo; + GList *node; + + combo = gtk_combo_box_text_new_with_entry (); + //work around gtk silliness - + //'appears-as-list' is a read-only style property instead of a widget property + gtk_rc_parse_string ( + "style \"list-style-style\" { GtkComboBox::appears-as-list = 1 } " + "widget \"*.list-style\" style \"list-style-style\""); + gtk_widget_set_name (combo, "list-style"); + + for (node = *history; node != NULL; node = g_list_next (node)) + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), node->data); + + gtk_widget_show (combo); + return combo; +} + +#if 0 /* if we want to cleanup before exit ... */ +void clear_combo_history (GList *history) +{ + GList *node; + if (history != NULL) + { + for (node = history; node != NULL; node = g_list_next (node)) + { + if (node->data != NULL) + g_free (node->data); + } + g_list_free (history); + history = NULL; + } +} +#endif +#endif diff --git a/src/utils.h b/src/utils.h index 0a1e211..6a72706 100644 --- a/src/utils.h +++ b/src/utils.h @@ -24,5 +24,9 @@ gchar *gedit_utils_get_stdin(void); #endif GtkWidget *create_button_with_stock_image(const gchar *text, const gchar *stock_id); +#if SEARCH_HISTORY +void update_combo_data(GtkWidget *entry, GList **history); +GtkWidget *create_combo_with_history(GList **history); +#endif #endif /* _UTILS_H */