gimp r26334 - in branches/soc-2008-tagging: . app/widgets
- From: aurisj svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r26334 - in branches/soc-2008-tagging: . app/widgets
- Date: Tue, 29 Jul 2008 17:15:26 +0000 (UTC)
Author: aurisj
Date: Tue Jul 29 17:15:26 2008
New Revision: 26334
URL: http://svn.gnome.org/viewvc/gimp?rev=26334&view=rev
Log:
2008-07-29 Aurimas JuÅka <aurisj svn gnome org>
* app/widgets/gimptagentry.[ch]: based on user behaviour track if tags
should be considered "accepted" (delete operates on jellybeans) or "not
accepted" (delete operates on characters).
Modified:
branches/soc-2008-tagging/ChangeLog
branches/soc-2008-tagging/app/widgets/gimptagentry.c
branches/soc-2008-tagging/app/widgets/gimptagentry.h
Modified: branches/soc-2008-tagging/app/widgets/gimptagentry.c
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimptagentry.c (original)
+++ branches/soc-2008-tagging/app/widgets/gimptagentry.c Tue Jul 29 17:15:26 2008
@@ -24,6 +24,7 @@
#include <string.h>
#include <gtk/gtk.h>
+#include <gdk/gdkkeysyms.h>
#include "widgets-types.h"
@@ -64,6 +65,9 @@
static void gimp_tag_entry_delete_from_cursor (GtkEntry *entry,
GtkDeleteType delete_type,
gint count);
+static gboolean gimp_tag_entry_key_press (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer user_data);
static void gimp_tag_entry_query_tag (GimpTagEntry *entry);
static void gimp_tag_entry_assign_tags (GimpTagEntry *tag_entry);
@@ -129,6 +133,9 @@
g_signal_connect (entry, "insert-text",
G_CALLBACK (gimp_tag_entry_insert_text),
NULL);
+ g_signal_connect (entry, "key-press-event",
+ G_CALLBACK (gimp_tag_entry_key_press),
+ NULL);
g_signal_connect (entry, "focus-in-event",
G_CALLBACK (gimp_tag_entry_focus_in),
NULL);
@@ -213,6 +220,8 @@
{
gimp_tag_entry_assign_tags (tag_entry);
}
+
+ tag_entry->tags_accepted = TRUE;
}
static void
@@ -663,7 +672,10 @@
GdkEventFocus *event,
gpointer user_data)
{
- gimp_tag_entry_toggle_desc (GIMP_TAG_ENTRY (widget), TRUE);
+ GimpTagEntry *tag_entry = GIMP_TAG_ENTRY (widget);
+
+ tag_entry->tags_accepted = TRUE;
+ gimp_tag_entry_toggle_desc (tag_entry, TRUE);
return FALSE;
}
@@ -782,13 +794,15 @@
static void
gimp_tag_entry_backspace (GtkEntry *entry)
{
+ GimpTagEntry *tag_entry = GIMP_TAG_ENTRY (entry);
gint selection_start;
gint selection_end;
gtk_editable_get_selection_bounds (GTK_EDITABLE (entry),
&selection_start, &selection_end);
if (selection_start == selection_end
- && selection_start > 0)
+ && selection_start > 0
+ && tag_entry->tags_accepted)
{
gtk_editable_set_position (GTK_EDITABLE (entry), selection_start - 1);
}
@@ -812,12 +826,44 @@
}
}
+
+static gboolean
+gimp_tag_entry_key_press (GtkWidget *widget,
+ GdkEventKey *event,
+ gpointer user_data)
+{
+ GimpTagEntry *tag_entry = GIMP_TAG_ENTRY (widget);
+
+ switch (event->keyval)
+ {
+ case GDK_Tab:
+ case GDK_Return:
+ case GDK_Escape:
+ case GDK_comma:
+ tag_entry->tags_accepted = TRUE;
+ break;
+
+ case GDK_BackSpace:
+ case GDK_Delete:
+ break;
+
+ default:
+ tag_entry->tags_accepted = FALSE;
+ break;
+ }
+
+ return FALSE;
+}
+
static gboolean
gimp_tag_entry_button_release (GtkWidget *widget,
GdkEventButton *event)
{
+ GimpTagEntry *tag_entry = GIMP_TAG_ENTRY (widget);
+
if (event->button == 1)
{
+ tag_entry->tags_accepted = TRUE;
g_idle_add ((GSourceFunc) gimp_tag_entry_try_select_jellybean,
widget);
}
@@ -868,6 +914,11 @@
gchar *previous_jellybean;
gboolean jellybean_valid = FALSE;
+ if (!entry->tags_accepted)
+ {
+ return FALSE;
+ }
+
gtk_editable_get_selection_bounds (GTK_EDITABLE (entry),
&selection_start, &selection_end);
if (selection_start != selection_end)
Modified: branches/soc-2008-tagging/app/widgets/gimptagentry.h
==============================================================================
--- branches/soc-2008-tagging/app/widgets/gimptagentry.h (original)
+++ branches/soc-2008-tagging/app/widgets/gimptagentry.h Tue Jul 29 17:15:26 2008
@@ -48,6 +48,7 @@
GimpTagEntryMode mode;
gboolean description_shown;
gboolean internal_change;
+ gboolean tags_accepted;
};
struct _GimpTagEntryClass
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]