ClipIt-v1.3.11-22122010001

+ Fixed: Indicator menu now actually refreshes properly.
+ Fixed: Removed "Full history" and changed the wording in the
                "Preferences" dialog.
+ Fixed: Imported "Select first item in menu" fix from Parcellite 0.9.3.

Changes to be committed:

	modified:   ChangeLog
	modified:   autom4te.cache/output.0
	modified:   autom4te.cache/output.1
	modified:   autom4te.cache/traces.1
	modified:   configure
	modified:   configure.in
	modified:   src/history.c
	modified:   src/main.c
	modified:   src/main.h
	modified:   src/preferences.c
	modified:   src/preferences.h
This commit is contained in:
Cristian Henzel 2010-12-22 12:12:28 +02:00
parent 3af1b702e6
commit 1cb116c45a
11 changed files with 66 additions and 199 deletions

View File

@ -1,3 +1,9 @@
ClipIt-v1.3.11-22122010001 - 22 Dec. 2010
+ Fixed: Indicator menu now actually refreshes properly.
+ Fixed: Removed "Full history" and changed the wording in the
"Preferences" dialog.
+ Fixed: Imported "Select first item in menu" fix from Parcellite 0.9.3.
ClipIt-v1.3.10-21122010001 - 21 Dec. 2010 ClipIt-v1.3.10-21122010001 - 21 Dec. 2010
+ Fixed: Imported fixes from Parcellite 0.9.3 (thanks to Doug Springer). + Fixed: Imported fixes from Parcellite 0.9.3 (thanks to Doug Springer).
+ Fixed: Fixed cast warnings when building on x86 machines. + Fixed: Fixed cast warnings when building on x86 machines.

View File

@ -1,6 +1,6 @@
@%:@! /bin/sh @%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.67 for clipit 1.3.10. @%:@ Generated by GNU Autoconf 2.67 for clipit 1.3.11.
@%:@ @%:@
@%:@ Report bugs to <oss@rspwn.com>. @%:@ Report bugs to <oss@rspwn.com>.
@%:@ @%:@
@ -552,8 +552,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='clipit' PACKAGE_NAME='clipit'
PACKAGE_TARNAME='clipit' PACKAGE_TARNAME='clipit'
PACKAGE_VERSION='1.3.10' PACKAGE_VERSION='1.3.11'
PACKAGE_STRING='clipit 1.3.10' PACKAGE_STRING='clipit 1.3.11'
PACKAGE_BUGREPORT='oss@rspwn.com' PACKAGE_BUGREPORT='oss@rspwn.com'
PACKAGE_URL='' PACKAGE_URL=''
@ -1328,7 +1328,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures clipit 1.3.10 to adapt to many kinds of systems. \`configure' configures clipit 1.3.11 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1398,7 +1398,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of clipit 1.3.10:";; short | recursive ) echo "Configuration of clipit 1.3.11:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1511,7 +1511,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
clipit configure 1.3.10 clipit configure 1.3.11
generated by GNU Autoconf 2.67 generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010 Free Software Foundation, Inc.
@ -1880,7 +1880,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by clipit $as_me 1.3.10, which was It was created by clipit $as_me 1.3.11, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@ $ $0 $@
@ -2696,7 +2696,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE=clipit PACKAGE=clipit
VERSION=1.3.10 VERSION=1.3.11
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -9764,7 +9764,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by clipit $as_me 1.3.10, which was This file was extended by clipit $as_me 1.3.11, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -9830,7 +9830,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
clipit config.status 1.3.10 clipit config.status 1.3.11
configured by $0, generated by GNU Autoconf 2.67, configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@ -1,6 +1,6 @@
@%:@! /bin/sh @%:@! /bin/sh
@%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Guess values for system-dependent variables and create Makefiles.
@%:@ Generated by GNU Autoconf 2.67 for clipit 1.3.10. @%:@ Generated by GNU Autoconf 2.67 for clipit 1.3.11.
@%:@ @%:@
@%:@ Report bugs to <oss@rspwn.com>. @%:@ Report bugs to <oss@rspwn.com>.
@%:@ @%:@
@ -552,8 +552,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='clipit' PACKAGE_NAME='clipit'
PACKAGE_TARNAME='clipit' PACKAGE_TARNAME='clipit'
PACKAGE_VERSION='1.3.10' PACKAGE_VERSION='1.3.11'
PACKAGE_STRING='clipit 1.3.10' PACKAGE_STRING='clipit 1.3.11'
PACKAGE_BUGREPORT='oss@rspwn.com' PACKAGE_BUGREPORT='oss@rspwn.com'
PACKAGE_URL='' PACKAGE_URL=''
@ -1328,7 +1328,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures clipit 1.3.10 to adapt to many kinds of systems. \`configure' configures clipit 1.3.11 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1398,7 +1398,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of clipit 1.3.10:";; short | recursive ) echo "Configuration of clipit 1.3.11:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1511,7 +1511,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
clipit configure 1.3.10 clipit configure 1.3.11
generated by GNU Autoconf 2.67 generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010 Free Software Foundation, Inc.
@ -1880,7 +1880,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by clipit $as_me 1.3.10, which was It was created by clipit $as_me 1.3.11, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@ $ $0 $@
@ -2696,7 +2696,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE=clipit PACKAGE=clipit
VERSION=1.3.10 VERSION=1.3.11
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -9764,7 +9764,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by clipit $as_me 1.3.10, which was This file was extended by clipit $as_me 1.3.11, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -9830,7 +9830,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
clipit config.status 1.3.10 clipit config.status 1.3.11
configured by $0, generated by GNU Autoconf 2.67, configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@ -8,7 +8,7 @@ m4trace:aclocal.m4:2010: -1- m4_include([m4/lib-prefix.m4])
m4trace:aclocal.m4:2011: -1- m4_include([m4/nls.m4]) m4trace:aclocal.m4:2011: -1- m4_include([m4/nls.m4])
m4trace:aclocal.m4:2012: -1- m4_include([m4/po.m4]) m4trace:aclocal.m4:2012: -1- m4_include([m4/po.m4])
m4trace:aclocal.m4:2013: -1- m4_include([m4/progtest.m4]) m4trace:aclocal.m4:2013: -1- m4_include([m4/progtest.m4])
m4trace:configure.in:5: -1- AC_INIT([clipit], [1.3.10], [oss@rspwn.com]) m4trace:configure.in:5: -1- AC_INIT([clipit], [1.3.11], [oss@rspwn.com])
m4trace:configure.in:5: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:5: -1- m4_pattern_forbid([^_?A[CHUM]_])
m4trace:configure.in:5: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:5: -1- m4_pattern_forbid([_AC_])
m4trace:configure.in:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:5: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS'])

20
configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.67 for clipit 1.3.10. # Generated by GNU Autoconf 2.67 for clipit 1.3.11.
# #
# Report bugs to <oss@rspwn.com>. # Report bugs to <oss@rspwn.com>.
# #
@ -552,8 +552,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='clipit' PACKAGE_NAME='clipit'
PACKAGE_TARNAME='clipit' PACKAGE_TARNAME='clipit'
PACKAGE_VERSION='1.3.10' PACKAGE_VERSION='1.3.11'
PACKAGE_STRING='clipit 1.3.10' PACKAGE_STRING='clipit 1.3.11'
PACKAGE_BUGREPORT='oss@rspwn.com' PACKAGE_BUGREPORT='oss@rspwn.com'
PACKAGE_URL='' PACKAGE_URL=''
@ -1328,7 +1328,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # 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. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures clipit 1.3.10 to adapt to many kinds of systems. \`configure' configures clipit 1.3.11 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1398,7 +1398,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of clipit 1.3.10:";; short | recursive ) echo "Configuration of clipit 1.3.11:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1511,7 +1511,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
clipit configure 1.3.10 clipit configure 1.3.11
generated by GNU Autoconf 2.67 generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc. Copyright (C) 2010 Free Software Foundation, Inc.
@ -1880,7 +1880,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by clipit $as_me 1.3.10, which was It was created by clipit $as_me 1.3.11, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@ $ $0 $@
@ -2696,7 +2696,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE=clipit PACKAGE=clipit
VERSION=1.3.10 VERSION=1.3.11
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -9764,7 +9764,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by clipit $as_me 1.3.10, which was This file was extended by clipit $as_me 1.3.11, which was
generated by GNU Autoconf 2.67. Invocation command line was generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -9830,7 +9830,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\ ac_cs_version="\\
clipit config.status 1.3.10 clipit config.status 1.3.11
configured by $0, generated by GNU Autoconf 2.67, configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"

View File

@ -2,7 +2,7 @@
# Autoconf/automake. # Autoconf/automake.
# ------------------------------------------------------------------------------- # -------------------------------------------------------------------------------
AC_PREREQ([2.5]) AC_PREREQ([2.5])
AC_INIT([clipit], [1.3.10], [oss@rspwn.com]) AC_INIT([clipit], [1.3.11], [oss@rspwn.com])
AM_INIT_AUTOMAKE([AC_PACKAGE_TARNAME()], [AC_PACKAGE_VERSION()]) AM_INIT_AUTOMAKE([AC_PACKAGE_TARNAME()], [AC_PACKAGE_VERSION()])
AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_MACRO_DIR([m4])

View File

@ -19,6 +19,10 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>. * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/ */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <glib.h> #include <glib.h>
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <string.h> #include <string.h>

View File

@ -57,11 +57,11 @@ static gboolean actions_lock = FALSE;
/* Init preferences structure */ /* Init preferences structure */
prefs_t prefs = {DEF_USE_COPY, DEF_USE_PRIMARY, DEF_SYNCHRONIZE, prefs_t prefs = {DEF_USE_COPY, DEF_USE_PRIMARY, DEF_SYNCHRONIZE,
DEF_SHOW_INDEXES, DEF_SAVE_URIS, DEF_SAVE_HISTORY, DEF_SHOW_INDEXES, DEF_SAVE_URIS, DEF_SAVE_HISTORY,
DEF_HISTORY_LIMIT, DEF_SMALL_HISTORY, DEF_HISTORY_SMALL, DEF_HISTORY_LIMIT, DEF_ITEMS_MENU, DEF_HYPERLINKS_ONLY,
DEF_HYPERLINKS_ONLY, DEF_CONFIRM_CLEAR, DEF_FULL_HIST_BUTTON, DEF_CONFIRM_CLEAR, DEF_SINGLE_LINE, DEF_REVERSE_HISTORY,
DEF_SINGLE_LINE, DEF_REVERSE_HISTORY, DEF_ITEM_LENGTH, DEF_ITEM_LENGTH, DEF_ELLIPSIZE, INIT_HISTORY_KEY,
DEF_ELLIPSIZE, INIT_HISTORY_KEY, INIT_ACTIONS_KEY, INIT_ACTIONS_KEY, INIT_MENU_KEY, INIT_SEARCH_KEY,
INIT_MENU_KEY, INIT_SEARCH_KEY, DEF_NO_ICON}; DEF_NO_ICON};
/* Called every CHECK_INTERVAL seconds to check for new items */ /* Called every CHECK_INTERVAL seconds to check for new items */
static gboolean item_check(gpointer data) static gboolean item_check(gpointer data)
@ -465,96 +465,8 @@ static gboolean show_actions_menu(gpointer data)
return FALSE; return FALSE;
} }
static gboolean show_history_menu_full(gpointer data)
{
/* Declare some variables */
GtkWidget *menu, *menu_item, *item_label;
/* Create the menu */
menu = gtk_menu_new();
g_signal_connect((GObject*)menu, "selection-done", (GCallback)gtk_widget_destroy, NULL);
/* Items */
if ((history != NULL) && (history->data != NULL))
{
/* Declare some variables */
GSList* element;
gint element_number = 0;
gchar* primary_temp = gtk_clipboard_wait_for_text(primary);
gchar* clipboard_temp = gtk_clipboard_wait_for_text(clipboard);
/* Reverse history if enabled */
if (prefs.reverse_history)
{
history = g_slist_reverse(history);
element_number = g_slist_length(history) - 1;
}
/* Go through each element and adding each */
for (element = history; element != NULL; element = element->next)
{
GString* string = g_string_new((gchar*)element->data);
/* Ellipsize text */
string = ellipsize_string(string);
/* Remove control characters */
string = remove_newlines_string(string);
/* Make new item with ellipsized text */
gchar* list_item;
if (prefs.show_indexes)
{
list_item = g_strdup_printf("%d. %s", (element_number+1), string->str);
} else {
list_item = g_strdup(string->str);
}
menu_item = gtk_menu_item_new_with_label(list_item);
g_signal_connect((GObject*)menu_item, "activate", (GCallback)item_selected, GINT_TO_POINTER(element_number));
/* Modify menu item label properties */
item_label = gtk_bin_get_child((GtkBin*)menu_item);
gtk_label_set_single_line_mode((GtkLabel*)item_label, prefs.single_line);
/* Check if item is also clipboard text and make bold */
if ((clipboard_temp) && (g_strcmp0((gchar*)element->data, clipboard_temp) == 0))
{
gchar* bold_text = g_markup_printf_escaped("<b>%s</b>", list_item);
gtk_label_set_markup((GtkLabel*)item_label, bold_text);
g_free(bold_text);
}
else if ((primary_temp) && (g_strcmp0((gchar*)element->data, primary_temp) == 0))
{
gchar* italic_text = g_markup_printf_escaped("<i>%s</i>", list_item);
gtk_label_set_markup((GtkLabel*)item_label, italic_text);
g_free(italic_text);
}
g_free(list_item);
/* Append item */
gtk_menu_shell_append((GtkMenuShell*)menu, menu_item);
/* Prepare for next item */
g_string_free(string, TRUE);
if (prefs.reverse_history)
element_number--;
else
element_number++;
}
/* Cleanup */
g_free(primary_temp);
g_free(clipboard_temp);
/* Return history to normal if reversed */
if (prefs.reverse_history)
history = g_slist_reverse(history);
}
else
{
/* Nothing in history so adding empty */
menu_item = gtk_menu_item_new_with_label(_("Empty"));
gtk_widget_set_sensitive(menu_item, FALSE);
gtk_menu_shell_append((GtkMenuShell*)menu, menu_item);
}
/* Popup the menu... */
gtk_widget_show_all(menu);
gtk_menu_popup((GtkMenu*)menu, NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time());
/* Return FALSE so the g_timeout_add() function is called only once */
return FALSE;
}
/* Generates the small history menu */ /* Generates the small history menu */
static gboolean show_history_menu_small(gpointer data) static gboolean show_history_menu(gpointer data)
{ {
/* Declare some variables */ /* Declare some variables */
GtkWidget *menu, *menu_item, *menu_image, *item_label; GtkWidget *menu, *menu_item, *menu_image, *item_label;
@ -578,7 +490,7 @@ static gboolean show_history_menu_small(gpointer data)
element_number = g_slist_length(history) - 1; element_number = g_slist_length(history) - 1;
} }
/* Go through each element and adding each */ /* Go through each element and adding each */
for (element = history; (element != NULL) && (element_number_small < prefs.history_small); element = element->next) for (element = history; (element != NULL) && (element_number_small < prefs.items_menu); element = element->next)
{ {
GString* string = g_string_new((gchar*)element->data); GString* string = g_string_new((gchar*)element->data);
/* Ellipsize text */ /* Ellipsize text */
@ -638,31 +550,10 @@ static gboolean show_history_menu_small(gpointer data)
gtk_widget_set_sensitive(menu_item, FALSE); gtk_widget_set_sensitive(menu_item, FALSE);
gtk_menu_shell_append((GtkMenuShell*)menu, menu_item); gtk_menu_shell_append((GtkMenuShell*)menu, menu_item);
} }
/* -------------------- */
/* Show full history button (if enabled) */
if (!prefs.full_hist_button)
{
gtk_menu_shell_append((GtkMenuShell*)menu, gtk_separator_menu_item_new());
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Show full history"));
menu_image = gtk_image_new_from_stock(GTK_STOCK_ZOOM_IN, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image((GtkImageMenuItem*)menu_item, menu_image);
g_signal_connect((GObject*)menu_item, "activate", (GCallback)show_history_menu_full, NULL);
gtk_menu_shell_append((GtkMenuShell*)menu, menu_item);
}
/* Popup the menu... */ /* Popup the menu... */
gtk_widget_show_all(menu); gtk_widget_show_all(menu);
gtk_menu_popup((GtkMenu*)menu, NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time()); gtk_menu_popup((GtkMenu*)menu, NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time());
/* Return FALSE so the g_timeout_add() function is called only once */ gtk_menu_shell_select_first((GtkMenuShell*)menu, TRUE);
return FALSE;
}
/* Called when status icon is left-clicked or the history menu hotkey is pressed */
static gboolean show_history_menu()
{
if (prefs.small_history)
g_timeout_add(POPUP_DELAY, show_history_menu_small, NULL);
else
g_timeout_add(POPUP_DELAY, show_history_menu_full, NULL);
/* Return FALSE so the g_timeout_add() function is called only once */ /* Return FALSE so the g_timeout_add() function is called only once */
return FALSE; return FALSE;
} }
@ -692,7 +583,7 @@ void create_app_indicator(gint create)
element_number = g_slist_length(history) - 1; element_number = g_slist_length(history) - 1;
} }
/* Go through each element and adding each */ /* Go through each element and adding each */
for (element = history; (element != NULL) && (element_number_small < prefs.history_small); element = element->next) for (element = history; (element != NULL) && (element_number_small < prefs.items_menu); element = element->next)
{ {
GString* string = g_string_new((gchar*)element->data); GString* string = g_string_new((gchar*)element->data);
/* Ellipsize text */ /* Ellipsize text */
@ -760,12 +651,6 @@ void create_app_indicator(gint create)
menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL); menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL);
g_signal_connect((GObject*)menu_item, "activate", (GCallback)show_about_dialog, NULL); g_signal_connect((GObject*)menu_item, "activate", (GCallback)show_about_dialog, NULL);
gtk_menu_shell_append((GtkMenuShell*)indicator_menu, menu_item); gtk_menu_shell_append((GtkMenuShell*)indicator_menu, menu_item);
/* Full history button (if enabled) */
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Show full history"));
menu_image = gtk_image_new_from_stock(GTK_STOCK_ZOOM_IN, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image((GtkImageMenuItem*)menu_item, menu_image);
g_signal_connect((GObject*)menu_item, "activate", (GCallback)show_history_menu_full, NULL);
gtk_menu_shell_append((GtkMenuShell*)indicator_menu, menu_item);
/* Manage history */ /* Manage history */
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Manage history")); menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Manage history"));
menu_image = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_MENU); menu_image = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
@ -826,7 +711,7 @@ static gboolean show_clipit_menu()
element_number = g_slist_length(history) - 1; element_number = g_slist_length(history) - 1;
} }
/* Go through each element and adding each */ /* Go through each element and adding each */
for (element = history; (element != NULL) && (element_number_small < prefs.history_small); element = element->next) for (element = history; (element != NULL) && (element_number_small < prefs.items_menu); element = element->next)
{ {
GString* string = g_string_new((gchar*)element->data); GString* string = g_string_new((gchar*)element->data);
/* Ellipsize text */ /* Ellipsize text */
@ -894,15 +779,6 @@ static gboolean show_clipit_menu()
menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL); menu_item = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL);
g_signal_connect((GObject*)menu_item, "activate", (GCallback)show_about_dialog, NULL); g_signal_connect((GObject*)menu_item, "activate", (GCallback)show_about_dialog, NULL);
gtk_menu_shell_append((GtkMenuShell*)statusicon_menu, menu_item); gtk_menu_shell_append((GtkMenuShell*)statusicon_menu, menu_item);
/* Full history button (if enabled) */
if (prefs.full_hist_button && prefs.small_history)
{
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Show full history"));
menu_image = gtk_image_new_from_stock(GTK_STOCK_ZOOM_IN, GTK_ICON_SIZE_MENU);
gtk_image_menu_item_set_image((GtkImageMenuItem*)menu_item, menu_image);
g_signal_connect((GObject*)menu_item, "activate", (GCallback)show_history_menu_full, NULL);
gtk_menu_shell_append((GtkMenuShell*)statusicon_menu, menu_item);
}
/* Manage history */ /* Manage history */
menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Manage history")); menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Manage history"));
menu_image = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_MENU); menu_image = gtk_image_new_from_stock(GTK_STOCK_FIND, GTK_ICON_SIZE_MENU);
@ -921,6 +797,7 @@ static gboolean show_clipit_menu()
gtk_widget_show_all(statusicon_menu); gtk_widget_show_all(statusicon_menu);
gtk_widget_set_visible(statusicon_menu, TRUE); gtk_widget_set_visible(statusicon_menu, TRUE);
gtk_menu_popup((GtkMenu*)statusicon_menu, NULL, NULL, gtk_status_icon_position_menu, status_icon, 1, gtk_get_current_event_time()); gtk_menu_popup((GtkMenu*)statusicon_menu, NULL, NULL, gtk_status_icon_position_menu, status_icon, 1, gtk_get_current_event_time());
gtk_menu_shell_select_first((GtkMenuShell*)statusicon_menu, TRUE);
status_menu_lock = FALSE; status_menu_lock = FALSE;
} }

View File

@ -41,9 +41,7 @@ typedef struct
gboolean save_history; /* Save history */ gboolean save_history; /* Save history */
gint history_limit; /* Items in history */ gint history_limit; /* Items in history */
gboolean small_history; /* Use small history */ gint items_menu; /* Items in small history */
gint history_small; /* Items in small history */
gboolean full_hist_button; /* Fix clipboard */
gboolean hyperlinks_only; /* Hyperlinks only */ gboolean hyperlinks_only; /* Hyperlinks only */
gboolean confirm_clear; /* Confirm clear */ gboolean confirm_clear; /* Confirm clear */

View File

@ -34,9 +34,8 @@ GtkWidget *copy_check,
*synchronize_check, *synchronize_check,
*show_indexes_check, *show_indexes_check,
*save_uris_check, *save_uris_check,
*full_hist_check,
*history_spin, *history_spin,
*history_small, *items_menu,
*charlength_spin, *charlength_spin,
*ellipsize_combo, *ellipsize_combo,
*history_key_entry, *history_key_entry,
@ -44,7 +43,6 @@ GtkWidget *copy_check,
*menu_key_entry, *menu_key_entry,
*search_key_entry, *search_key_entry,
*save_check, *save_check,
*small_check,
*confirm_check, *confirm_check,
*reverse_check, *reverse_check,
*linemode_check, *linemode_check,
@ -80,11 +78,9 @@ static void apply_preferences()
prefs.save_uris = gtk_toggle_button_get_active((GtkToggleButton*)save_uris_check); prefs.save_uris = gtk_toggle_button_get_active((GtkToggleButton*)save_uris_check);
prefs.save_history = gtk_toggle_button_get_active((GtkToggleButton*)save_check); prefs.save_history = gtk_toggle_button_get_active((GtkToggleButton*)save_check);
prefs.history_limit = gtk_spin_button_get_value_as_int((GtkSpinButton*)history_spin); prefs.history_limit = gtk_spin_button_get_value_as_int((GtkSpinButton*)history_spin);
prefs.small_history = gtk_toggle_button_get_active((GtkToggleButton*)small_check); prefs.items_menu = gtk_spin_button_get_value_as_int((GtkSpinButton*)items_menu);
prefs.history_small = gtk_spin_button_get_value_as_int((GtkSpinButton*)history_small);
prefs.hyperlinks_only = gtk_toggle_button_get_active((GtkToggleButton*)hyperlinks_check); prefs.hyperlinks_only = gtk_toggle_button_get_active((GtkToggleButton*)hyperlinks_check);
prefs.confirm_clear = gtk_toggle_button_get_active((GtkToggleButton*)confirm_check); prefs.confirm_clear = gtk_toggle_button_get_active((GtkToggleButton*)confirm_check);
prefs.full_hist_button = gtk_toggle_button_get_active((GtkToggleButton*)full_hist_check);
prefs.single_line = gtk_toggle_button_get_active((GtkToggleButton*)linemode_check); prefs.single_line = gtk_toggle_button_get_active((GtkToggleButton*)linemode_check);
prefs.reverse_history = gtk_toggle_button_get_active((GtkToggleButton*)reverse_check); prefs.reverse_history = gtk_toggle_button_get_active((GtkToggleButton*)reverse_check);
prefs.item_length = gtk_spin_button_get_value_as_int((GtkSpinButton*)charlength_spin); prefs.item_length = gtk_spin_button_get_value_as_int((GtkSpinButton*)charlength_spin);
@ -116,11 +112,9 @@ static void save_preferences()
g_key_file_set_boolean(rc_key, "rc", "save_uris", prefs.save_uris); g_key_file_set_boolean(rc_key, "rc", "save_uris", prefs.save_uris);
g_key_file_set_boolean(rc_key, "rc", "save_history", prefs.save_history); g_key_file_set_boolean(rc_key, "rc", "save_history", prefs.save_history);
g_key_file_set_integer(rc_key, "rc", "history_limit", prefs.history_limit); g_key_file_set_integer(rc_key, "rc", "history_limit", prefs.history_limit);
g_key_file_set_boolean(rc_key, "rc", "small_history", prefs.small_history); g_key_file_set_integer(rc_key, "rc", "items_menu", prefs.items_menu);
g_key_file_set_integer(rc_key, "rc", "history_small", prefs.history_small);
g_key_file_set_boolean(rc_key, "rc", "hyperlinks_only", prefs.hyperlinks_only); g_key_file_set_boolean(rc_key, "rc", "hyperlinks_only", prefs.hyperlinks_only);
g_key_file_set_boolean(rc_key, "rc", "confirm_clear", prefs.confirm_clear); g_key_file_set_boolean(rc_key, "rc", "confirm_clear", prefs.confirm_clear);
g_key_file_set_boolean(rc_key, "rc", "full_hist_button", prefs.full_hist_button);
g_key_file_set_boolean(rc_key, "rc", "single_line", prefs.single_line); g_key_file_set_boolean(rc_key, "rc", "single_line", prefs.single_line);
g_key_file_set_boolean(rc_key, "rc", "reverse_history", prefs.reverse_history); g_key_file_set_boolean(rc_key, "rc", "reverse_history", prefs.reverse_history);
g_key_file_set_integer(rc_key, "rc", "item_length", prefs.item_length); g_key_file_set_integer(rc_key, "rc", "item_length", prefs.item_length);
@ -221,11 +215,9 @@ void read_preferences()
prefs.save_uris = g_key_file_get_boolean(rc_key, "rc", "save_uris", NULL); prefs.save_uris = g_key_file_get_boolean(rc_key, "rc", "save_uris", NULL);
prefs.save_history = g_key_file_get_boolean(rc_key, "rc", "save_history", NULL); prefs.save_history = g_key_file_get_boolean(rc_key, "rc", "save_history", NULL);
prefs.history_limit = g_key_file_get_integer(rc_key, "rc", "history_limit", NULL); prefs.history_limit = g_key_file_get_integer(rc_key, "rc", "history_limit", NULL);
prefs.small_history = g_key_file_get_boolean(rc_key, "rc", "small_history", NULL); prefs.items_menu = g_key_file_get_integer(rc_key, "rc", "items_menu", NULL);
prefs.history_small = g_key_file_get_integer(rc_key, "rc", "history_small", NULL);
prefs.hyperlinks_only = g_key_file_get_boolean(rc_key, "rc", "hyperlinks_only", NULL); prefs.hyperlinks_only = g_key_file_get_boolean(rc_key, "rc", "hyperlinks_only", NULL);
prefs.confirm_clear = g_key_file_get_boolean(rc_key, "rc", "confirm_clear", NULL); prefs.confirm_clear = g_key_file_get_boolean(rc_key, "rc", "confirm_clear", NULL);
prefs.full_hist_button = g_key_file_get_boolean(rc_key, "rc", "full_hist_button", NULL);
prefs.single_line = g_key_file_get_boolean(rc_key, "rc", "single_line", NULL); prefs.single_line = g_key_file_get_boolean(rc_key, "rc", "single_line", NULL);
prefs.reverse_history = g_key_file_get_boolean(rc_key, "rc", "reverse_history", NULL); prefs.reverse_history = g_key_file_get_boolean(rc_key, "rc", "reverse_history", NULL);
prefs.item_length = g_key_file_get_integer(rc_key, "rc", "item_length", NULL); prefs.item_length = g_key_file_get_integer(rc_key, "rc", "item_length", NULL);
@ -238,8 +230,8 @@ void read_preferences()
/* Check for errors and set default values if any */ /* Check for errors and set default values if any */
if ((!prefs.history_limit) || (prefs.history_limit > 1000) || (prefs.history_limit < 0)) if ((!prefs.history_limit) || (prefs.history_limit > 1000) || (prefs.history_limit < 0))
prefs.history_limit = DEF_HISTORY_LIMIT; prefs.history_limit = DEF_HISTORY_LIMIT;
if ((!prefs.history_small) || (prefs.history_small > 100) || (prefs.history_small < 0)) if ((!prefs.items_menu) || (prefs.items_menu > 1000) || (prefs.items_menu < 0))
prefs.history_limit = DEF_HISTORY_SMALL; prefs.items_menu = DEF_ITEMS_MENU;
if ((!prefs.item_length) || (prefs.item_length > 75) || (prefs.item_length < 0)) if ((!prefs.item_length) || (prefs.item_length > 75) || (prefs.item_length < 0))
prefs.item_length = DEF_ITEM_LENGTH; prefs.item_length = DEF_ITEM_LENGTH;
if ((!prefs.ellipsize) || (prefs.ellipsize > 3) || (prefs.ellipsize < 0)) if ((!prefs.ellipsize) || (prefs.ellipsize > 3) || (prefs.ellipsize < 0))
@ -714,21 +706,15 @@ void show_preferences(gint tab)
history_spin = gtk_spin_button_new((GtkAdjustment*)adjustment, 0.0, 0); history_spin = gtk_spin_button_new((GtkAdjustment*)adjustment, 0.0, 0);
gtk_spin_button_set_update_policy((GtkSpinButton*)history_spin, GTK_UPDATE_IF_VALID); gtk_spin_button_set_update_policy((GtkSpinButton*)history_spin, GTK_UPDATE_IF_VALID);
gtk_box_pack_start((GtkBox*)hbox, history_spin, FALSE, FALSE, 0); gtk_box_pack_start((GtkBox*)hbox, history_spin, FALSE, FALSE, 0);
small_check = gtk_check_button_new_with_mnemonic(_("_Use small history"));
gtk_widget_set_tooltip_text(small_check, _("Use a small history window to prevent scrolling"));
gtk_box_pack_start((GtkBox*)vbox, small_check, FALSE, FALSE, 0);
hbox = gtk_hbox_new(FALSE, 4); hbox = gtk_hbox_new(FALSE, 4);
gtk_box_pack_start((GtkBox*)vbox, hbox, FALSE, FALSE, 0); gtk_box_pack_start((GtkBox*)vbox, hbox, FALSE, FALSE, 0);
label = gtk_label_new(_("Small history size:")); label = gtk_label_new(_("Items in menu:"));
gtk_misc_set_alignment((GtkMisc*)label, 0.0, 0.50); gtk_misc_set_alignment((GtkMisc*)label, 0.0, 0.50);
gtk_box_pack_start((GtkBox*)hbox, label, FALSE, FALSE, 0); gtk_box_pack_start((GtkBox*)hbox, label, FALSE, FALSE, 0);
adjustment_small = gtk_adjustment_new(25, 5, 100, 1, 10, 0); adjustment_small = gtk_adjustment_new(25, 5, 100, 1, 10, 0);
history_small = gtk_spin_button_new((GtkAdjustment*)adjustment_small, 0.0, 0); items_menu = gtk_spin_button_new((GtkAdjustment*)adjustment_small, 0.0, 0);
gtk_spin_button_set_update_policy((GtkSpinButton*)history_small, GTK_UPDATE_IF_VALID); gtk_spin_button_set_update_policy((GtkSpinButton*)items_menu, GTK_UPDATE_IF_VALID);
gtk_box_pack_start((GtkBox*)hbox, history_small, FALSE, FALSE, 0); gtk_box_pack_start((GtkBox*)hbox, items_menu, FALSE, FALSE, 0);
full_hist_check = gtk_check_button_new_with_mnemonic(_("_Full history button in panel menu"));
gtk_widget_set_tooltip_text(full_hist_check, _("Shows the \"full history\" button only in the panel menu, to keep the pop-up menu clean"));
gtk_box_pack_start((GtkBox*)vbox, full_hist_check, FALSE, FALSE, 0);
gtk_box_pack_start((GtkBox*)vbox_history, frame, FALSE, FALSE, 0); gtk_box_pack_start((GtkBox*)vbox_history, frame, FALSE, FALSE, 0);
/* Build the items frame */ /* Build the items frame */
@ -975,11 +961,9 @@ void show_preferences(gint tab)
gtk_toggle_button_set_active((GtkToggleButton*)save_uris_check, prefs.save_uris); gtk_toggle_button_set_active((GtkToggleButton*)save_uris_check, prefs.save_uris);
gtk_toggle_button_set_active((GtkToggleButton*)save_check, prefs.save_history); gtk_toggle_button_set_active((GtkToggleButton*)save_check, prefs.save_history);
gtk_spin_button_set_value((GtkSpinButton*)history_spin, (gdouble)prefs.history_limit); gtk_spin_button_set_value((GtkSpinButton*)history_spin, (gdouble)prefs.history_limit);
gtk_toggle_button_set_active((GtkToggleButton*)small_check, prefs.small_history); gtk_spin_button_set_value((GtkSpinButton*)items_menu, (gdouble)prefs.items_menu);
gtk_spin_button_set_value((GtkSpinButton*)history_small, (gdouble)prefs.history_small);
gtk_toggle_button_set_active((GtkToggleButton*)hyperlinks_check, prefs.hyperlinks_only); gtk_toggle_button_set_active((GtkToggleButton*)hyperlinks_check, prefs.hyperlinks_only);
gtk_toggle_button_set_active((GtkToggleButton*)confirm_check, prefs.confirm_clear); gtk_toggle_button_set_active((GtkToggleButton*)confirm_check, prefs.confirm_clear);
gtk_toggle_button_set_active((GtkToggleButton*)full_hist_check, prefs.full_hist_button);
gtk_toggle_button_set_active((GtkToggleButton*)linemode_check, prefs.single_line); gtk_toggle_button_set_active((GtkToggleButton*)linemode_check, prefs.single_line);
gtk_toggle_button_set_active((GtkToggleButton*)reverse_check, prefs.reverse_history); gtk_toggle_button_set_active((GtkToggleButton*)reverse_check, prefs.reverse_history);
gtk_spin_button_set_value((GtkSpinButton*)charlength_spin, (gdouble)prefs.item_length); gtk_spin_button_set_value((GtkSpinButton*)charlength_spin, (gdouble)prefs.item_length);

View File

@ -36,11 +36,9 @@ G_BEGIN_DECLS
#define DEF_SAVE_URIS TRUE #define DEF_SAVE_URIS TRUE
#define DEF_SAVE_HISTORY TRUE #define DEF_SAVE_HISTORY TRUE
#define DEF_HISTORY_LIMIT 50 #define DEF_HISTORY_LIMIT 50
#define DEF_SMALL_HISTORY TRUE #define DEF_ITEMS_MENU 20
#define DEF_HISTORY_SMALL 20
#define DEF_HYPERLINKS_ONLY FALSE #define DEF_HYPERLINKS_ONLY FALSE
#define DEF_CONFIRM_CLEAR FALSE #define DEF_CONFIRM_CLEAR FALSE
#define DEF_FULL_HIST_BUTTON FALSE
#define DEF_SINGLE_LINE TRUE #define DEF_SINGLE_LINE TRUE
#define DEF_REVERSE_HISTORY FALSE #define DEF_REVERSE_HISTORY FALSE
#define DEF_ITEM_LENGTH 50 #define DEF_ITEM_LENGTH 50