diff options
author | Andy Hertzfeld <andy@src.gnome.org> | 2001-04-10 23:33:13 +0000 |
---|---|---|
committer | Andy Hertzfeld <andy@src.gnome.org> | 2001-04-10 23:33:13 +0000 |
commit | d815e27c2b3fb9e74bac1db6aa9d15ec171c0405 (patch) | |
tree | 2d3159adaea3c539180dac2b02073efe3b352666 | |
parent | c14b9f008801b7d15062b512ea29064ca744cb7d (diff) | |
download | nautilus-d815e27c2b3fb9e74bac1db6aa9d15ec171c0405.tar.gz |
added a way for custom actions to take place when the user clicks on an
added a way for custom actions to take place when the user clicks
on an emblem, and used that to bring up the annotation window
when the "note" emblem is clicked on.
* libnautilus-extensions/nautilus-icon-canvas-item.c,h:
(nautilus_icon_canvas_item_event),
(nautilus_icon_canvas_item_hit_test_full),
(nautilus_icon_canvas_item_point),
(nautilus_icon_canvas_item_hit_test_rectangle):
renamed the "hit_test" routine to nautilus_icon_canvas_hit_test_full,
and made it public.
* libnautilus-extensions/nautilus-icon-container.c:
(hit_test_item), (nautilus_icon_container_did_not_drag),
(key_press_event), (nautilus_icon_container_initialize_class),
(handle_icon_button_press), (activate_selected_items):
added an emblem index parameter to the icon canvas's activate
signal, and set it up properly by calling the item hit test
routine to determine the emblem index.
* src/file-manager/fm-icon-view.c: (get_keyword_by_index),
(icon_container_activate_callback), (get_icon_annotation_callback):
changed the activate callback to bring up the annotation window
if the annotation emblem is clicked.
-rw-r--r-- | ChangeLog | 27 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-icon-canvas-item.c | 30 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-icon-canvas-item.h | 13 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-icon-container.c | 52 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-canvas-item.c | 30 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-canvas-item.h | 13 | ||||
-rw-r--r-- | libnautilus-private/nautilus-icon-container.c | 52 | ||||
-rw-r--r-- | src/file-manager/fm-icon-view.c | 60 |
8 files changed, 198 insertions, 79 deletions
@@ -1,5 +1,32 @@ 2001-04-10 Andy Hertzfeld <andy@eazel.com> + added a way for custom actions to take place when the user clicks + on an emblem, and used that to bring up the annotation window + when the "note" emblem is clicked on. + + * libnautilus-extensions/nautilus-icon-canvas-item.c,h: + (nautilus_icon_canvas_item_event), + (nautilus_icon_canvas_item_hit_test_full), + (nautilus_icon_canvas_item_point), + (nautilus_icon_canvas_item_hit_test_rectangle): + renamed the "hit_test" routine to nautilus_icon_canvas_hit_test_full, + and made it public. + + * libnautilus-extensions/nautilus-icon-container.c: + (hit_test_item), (nautilus_icon_container_did_not_drag), + (key_press_event), (nautilus_icon_container_initialize_class), + (handle_icon_button_press), (activate_selected_items): + added an emblem index parameter to the icon canvas's activate + signal, and set it up properly by calling the item hit test + routine to determine the emblem index. + + * src/file-manager/fm-icon-view.c: (get_keyword_by_index), + (icon_container_activate_callback), (get_icon_annotation_callback): + changed the activate callback to bring up the annotation window + if the annotation emblem is clicked. + +2001-04-10 Andy Hertzfeld <andy@eazel.com> + * libnautilus-extensions/nautilus-canvas-note-item.c: (nautilus_canvas_note_item_set_note_text), (nautilus_canvas_note_item_update): diff --git a/libnautilus-extensions/nautilus-icon-canvas-item.c b/libnautilus-extensions/nautilus-icon-canvas-item.c index c1d500e15..58b729a95 100644 --- a/libnautilus-extensions/nautilus-icon-canvas-item.c +++ b/libnautilus-extensions/nautilus-icon-canvas-item.c @@ -137,14 +137,6 @@ typedef enum { TOP_SIDE } RectangleSide; -typedef enum { - NO_HIT, - ICON_HIT, - LABEL_HIT, - STRETCH_HANDLE_HIT, - EMBLEM_HIT -} HitType; - typedef struct { NautilusIconCanvasItem *icon_item; ArtIRect icon_rect; @@ -243,11 +235,6 @@ static gboolean hit_test_stretch_handle (NautilusIconCanvasIt const ArtIRect *canvas_rect); static gboolean icon_canvas_item_is_smooth (const NautilusIconCanvasItem *icon_item); -static gboolean hit_test (NautilusIconCanvasItem *icon_item, - const ArtIRect *canvas_rect, - HitType *hit_type, - int *hit_index); - EEL_DEFINE_CLASS_BOILERPLATE (NautilusIconCanvasItem, nautilus_icon_canvas_item, GNOME_TYPE_CANVAS_ITEM) @@ -2065,7 +2052,7 @@ nautilus_icon_canvas_item_event (GnomeCanvasItem *item, GdkEvent *event) (GNOME_CANVAS_ITEM (item)->canvas, &world_rect, &hit_rect); /* hit-test so we can handle tooltips for emblems */ - hit_test (icon_item, &hit_rect, &hit_type, &hit_index); + nautilus_icon_canvas_item_hit_test_full (icon_item, &hit_rect, &hit_type, &hit_index); emblem_state = hit_type == EMBLEM_HIT ? hit_index : 0; nautilus_icon_canvas_item_set_note_state (icon_item, emblem_state); return TRUE; @@ -2122,8 +2109,11 @@ hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIR return FALSE; } -static gboolean -hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect, HitType *hit_type, int *hit_index) +gboolean +nautilus_icon_canvas_item_hit_test_full (NautilusIconCanvasItem *icon_item, + const ArtIRect *canvas_rect, + HitType *hit_type, + int *hit_index) { NautilusIconCanvasItemDetails *details; ArtIRect icon_rect; @@ -2213,7 +2203,7 @@ nautilus_icon_canvas_item_point (GnomeCanvasItem *item, double x, double y, int canvas_rect.y0 = cy; canvas_rect.x1 = cx + 1; canvas_rect.y1 = cy + 1; - if (hit_test (NAUTILUS_ICON_CANVAS_ITEM (item), &canvas_rect, NULL, NULL)) { + if (nautilus_icon_canvas_item_hit_test_rectangle (NAUTILUS_ICON_CANVAS_ITEM (item), &canvas_rect)) { return 0.0; } else { /* This value means not hit. @@ -2449,11 +2439,7 @@ nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, cons g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE); g_return_val_if_fail (canvas_rect != NULL, FALSE); -/* - eel_gnome_canvas_world_to_canvas_rectangle - (GNOME_CANVAS_ITEM (item)->canvas, world_rect, &canvas_rect); -*/ - return hit_test (item, canvas_rect, NULL, NULL); + return nautilus_icon_canvas_item_hit_test_full (item, canvas_rect, NULL, NULL); } const char * diff --git a/libnautilus-extensions/nautilus-icon-canvas-item.h b/libnautilus-extensions/nautilus-icon-canvas-item.h index 1e65fe084..2f9f90a34 100644 --- a/libnautilus-extensions/nautilus-icon-canvas-item.h +++ b/libnautilus-extensions/nautilus-icon-canvas-item.h @@ -44,6 +44,14 @@ BEGIN_GNOME_DECLS #define NAUTILUS_IS_ICON_CANVAS_ITEM_CLASS(klass) \ (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_ICON_CANVAS_ITEM)) +typedef enum { + NO_HIT, + ICON_HIT, + LABEL_HIT, + STRETCH_HANDLE_HIT, + EMBLEM_HIT +} HitType; + typedef struct NautilusIconCanvasItem NautilusIconCanvasItem; typedef struct NautilusIconCanvasItemClass NautilusIconCanvasItemClass; typedef struct NautilusIconCanvasItemDetails NautilusIconCanvasItemDetails; @@ -88,6 +96,11 @@ void nautilus_icon_canvas_item_set_control (NautilusIconCanvasItem /* geometry and hit testing */ gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, const ArtIRect *canvas_rect); +gboolean nautilus_icon_canvas_item_hit_test_full (NautilusIconCanvasItem *icon_item, + const ArtIRect *canvas_rect, + HitType *hit_type, + int *hit_index); + gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item, const ArtPoint *world_point); void nautilus_icon_canvas_item_invalidate_label_size (NautilusIconCanvasItem *item); diff --git a/libnautilus-extensions/nautilus-icon-container.c b/libnautilus-extensions/nautilus-icon-container.c index d1b3122a8..ec98db60d 100644 --- a/libnautilus-extensions/nautilus-icon-container.c +++ b/libnautilus-extensions/nautilus-icon-container.c @@ -119,7 +119,8 @@ enum { */ }; -static void activate_selected_items (NautilusIconContainer *container); +static void activate_selected_items (NautilusIconContainer *container, + int select_location); static void nautilus_icon_container_initialize_class (NautilusIconContainerClass *class); static void nautilus_icon_container_initialize (NautilusIconContainer *container); static void nautilus_icon_container_theme_changed (gpointer user_data); @@ -2536,13 +2537,41 @@ button_press_event (GtkWidget *widget, return return_value; } +/* utility routine to determine which portion of an icon was clicked, and return the + * emblem index if an emblem was clicked on + */ +static int +hit_test_item (NautilusIconCanvasItem *icon_item, GdkEventButton *event) +{ + ArtDRect world_rect; + ArtIRect canvas_rect; + HitType hit_type; + int emblem_index; + + world_rect.x0 = event->x; + world_rect.y0 = event->y; + world_rect.x1 = world_rect.x0 + 1.0; + world_rect.y1 = world_rect.y0 + 1.0; + eel_gnome_canvas_world_to_canvas_rectangle + (GNOME_CANVAS_ITEM (icon_item)->canvas, &world_rect, &canvas_rect); + + if (nautilus_icon_canvas_item_hit_test_full (icon_item, &canvas_rect, &hit_type, &emblem_index)) { + if (hit_type == EMBLEM_HIT) { + return emblem_index; + } + } + return 0; +} + static void nautilus_icon_container_did_not_drag (NautilusIconContainer *container, GdkEventButton *event) { + int click_location; NautilusIconContainerDetails *details; + details = container->details; - + if (!button_event_modifies_selection (event) && !details->drag_icon->is_selected) { gboolean selection_changed; @@ -2571,7 +2600,8 @@ nautilus_icon_container_did_not_drag (NautilusIconContainer *container, * NautilusList goes the other way because its "links" seem * much more link-like. */ - activate_selected_items (container); + click_location = hit_test_item (details->drag_icon->item, event); + activate_selected_items (container, click_location); } } } @@ -3003,7 +3033,7 @@ key_press_event (GtkWidget *widget, break; case GDK_Return: case GDK_KP_Enter: - activate_selected_items (container); + activate_selected_items (container, 0); handled = TRUE; break; case GDK_Escape: @@ -3076,9 +3106,10 @@ nautilus_icon_container_initialize_class (NautilusIconContainerClass *class) object_class->type, GTK_SIGNAL_OFFSET (NautilusIconContainerClass, activate), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); + gtk_marshal_NONE__POINTER_INT, + GTK_TYPE_NONE, 2, + GTK_TYPE_POINTER, + GTK_TYPE_INT); signals[CONTEXT_CLICK_SELECTION] = gtk_signal_new ("context_click_selection", GTK_RUN_LAST, @@ -3549,7 +3580,7 @@ handle_icon_button_press (NautilusIconContainer *container, details->drag_button = 0; details->drag_icon = NULL; - activate_selected_items (container); + activate_selected_items (container, 0); } return TRUE; @@ -3704,7 +3735,7 @@ icon_destroy (NautilusIconContainer *container, /* activate any selected items in the container */ static void -activate_selected_items (NautilusIconContainer *container) +activate_selected_items (NautilusIconContainer *container, int select_location) { GList *selection; @@ -3714,7 +3745,8 @@ activate_selected_items (NautilusIconContainer *container) if (selection != NULL) { gtk_signal_emit (GTK_OBJECT (container), signals[ACTIVATE], - selection); + selection, + select_location); } g_list_free (selection); } diff --git a/libnautilus-private/nautilus-icon-canvas-item.c b/libnautilus-private/nautilus-icon-canvas-item.c index c1d500e15..58b729a95 100644 --- a/libnautilus-private/nautilus-icon-canvas-item.c +++ b/libnautilus-private/nautilus-icon-canvas-item.c @@ -137,14 +137,6 @@ typedef enum { TOP_SIDE } RectangleSide; -typedef enum { - NO_HIT, - ICON_HIT, - LABEL_HIT, - STRETCH_HANDLE_HIT, - EMBLEM_HIT -} HitType; - typedef struct { NautilusIconCanvasItem *icon_item; ArtIRect icon_rect; @@ -243,11 +235,6 @@ static gboolean hit_test_stretch_handle (NautilusIconCanvasIt const ArtIRect *canvas_rect); static gboolean icon_canvas_item_is_smooth (const NautilusIconCanvasItem *icon_item); -static gboolean hit_test (NautilusIconCanvasItem *icon_item, - const ArtIRect *canvas_rect, - HitType *hit_type, - int *hit_index); - EEL_DEFINE_CLASS_BOILERPLATE (NautilusIconCanvasItem, nautilus_icon_canvas_item, GNOME_TYPE_CANVAS_ITEM) @@ -2065,7 +2052,7 @@ nautilus_icon_canvas_item_event (GnomeCanvasItem *item, GdkEvent *event) (GNOME_CANVAS_ITEM (item)->canvas, &world_rect, &hit_rect); /* hit-test so we can handle tooltips for emblems */ - hit_test (icon_item, &hit_rect, &hit_type, &hit_index); + nautilus_icon_canvas_item_hit_test_full (icon_item, &hit_rect, &hit_type, &hit_index); emblem_state = hit_type == EMBLEM_HIT ? hit_index : 0; nautilus_icon_canvas_item_set_note_state (icon_item, emblem_state); return TRUE; @@ -2122,8 +2109,11 @@ hit_test_pixbuf (GdkPixbuf *pixbuf, const ArtIRect *pixbuf_location, const ArtIR return FALSE; } -static gboolean -hit_test (NautilusIconCanvasItem *icon_item, const ArtIRect *canvas_rect, HitType *hit_type, int *hit_index) +gboolean +nautilus_icon_canvas_item_hit_test_full (NautilusIconCanvasItem *icon_item, + const ArtIRect *canvas_rect, + HitType *hit_type, + int *hit_index) { NautilusIconCanvasItemDetails *details; ArtIRect icon_rect; @@ -2213,7 +2203,7 @@ nautilus_icon_canvas_item_point (GnomeCanvasItem *item, double x, double y, int canvas_rect.y0 = cy; canvas_rect.x1 = cx + 1; canvas_rect.y1 = cy + 1; - if (hit_test (NAUTILUS_ICON_CANVAS_ITEM (item), &canvas_rect, NULL, NULL)) { + if (nautilus_icon_canvas_item_hit_test_rectangle (NAUTILUS_ICON_CANVAS_ITEM (item), &canvas_rect)) { return 0.0; } else { /* This value means not hit. @@ -2449,11 +2439,7 @@ nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, cons g_return_val_if_fail (NAUTILUS_IS_ICON_CANVAS_ITEM (item), FALSE); g_return_val_if_fail (canvas_rect != NULL, FALSE); -/* - eel_gnome_canvas_world_to_canvas_rectangle - (GNOME_CANVAS_ITEM (item)->canvas, world_rect, &canvas_rect); -*/ - return hit_test (item, canvas_rect, NULL, NULL); + return nautilus_icon_canvas_item_hit_test_full (item, canvas_rect, NULL, NULL); } const char * diff --git a/libnautilus-private/nautilus-icon-canvas-item.h b/libnautilus-private/nautilus-icon-canvas-item.h index 1e65fe084..2f9f90a34 100644 --- a/libnautilus-private/nautilus-icon-canvas-item.h +++ b/libnautilus-private/nautilus-icon-canvas-item.h @@ -44,6 +44,14 @@ BEGIN_GNOME_DECLS #define NAUTILUS_IS_ICON_CANVAS_ITEM_CLASS(klass) \ (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_ICON_CANVAS_ITEM)) +typedef enum { + NO_HIT, + ICON_HIT, + LABEL_HIT, + STRETCH_HANDLE_HIT, + EMBLEM_HIT +} HitType; + typedef struct NautilusIconCanvasItem NautilusIconCanvasItem; typedef struct NautilusIconCanvasItemClass NautilusIconCanvasItemClass; typedef struct NautilusIconCanvasItemDetails NautilusIconCanvasItemDetails; @@ -88,6 +96,11 @@ void nautilus_icon_canvas_item_set_control (NautilusIconCanvasItem /* geometry and hit testing */ gboolean nautilus_icon_canvas_item_hit_test_rectangle (NautilusIconCanvasItem *item, const ArtIRect *canvas_rect); +gboolean nautilus_icon_canvas_item_hit_test_full (NautilusIconCanvasItem *icon_item, + const ArtIRect *canvas_rect, + HitType *hit_type, + int *hit_index); + gboolean nautilus_icon_canvas_item_hit_test_stretch_handles (NautilusIconCanvasItem *item, const ArtPoint *world_point); void nautilus_icon_canvas_item_invalidate_label_size (NautilusIconCanvasItem *item); diff --git a/libnautilus-private/nautilus-icon-container.c b/libnautilus-private/nautilus-icon-container.c index d1b3122a8..ec98db60d 100644 --- a/libnautilus-private/nautilus-icon-container.c +++ b/libnautilus-private/nautilus-icon-container.c @@ -119,7 +119,8 @@ enum { */ }; -static void activate_selected_items (NautilusIconContainer *container); +static void activate_selected_items (NautilusIconContainer *container, + int select_location); static void nautilus_icon_container_initialize_class (NautilusIconContainerClass *class); static void nautilus_icon_container_initialize (NautilusIconContainer *container); static void nautilus_icon_container_theme_changed (gpointer user_data); @@ -2536,13 +2537,41 @@ button_press_event (GtkWidget *widget, return return_value; } +/* utility routine to determine which portion of an icon was clicked, and return the + * emblem index if an emblem was clicked on + */ +static int +hit_test_item (NautilusIconCanvasItem *icon_item, GdkEventButton *event) +{ + ArtDRect world_rect; + ArtIRect canvas_rect; + HitType hit_type; + int emblem_index; + + world_rect.x0 = event->x; + world_rect.y0 = event->y; + world_rect.x1 = world_rect.x0 + 1.0; + world_rect.y1 = world_rect.y0 + 1.0; + eel_gnome_canvas_world_to_canvas_rectangle + (GNOME_CANVAS_ITEM (icon_item)->canvas, &world_rect, &canvas_rect); + + if (nautilus_icon_canvas_item_hit_test_full (icon_item, &canvas_rect, &hit_type, &emblem_index)) { + if (hit_type == EMBLEM_HIT) { + return emblem_index; + } + } + return 0; +} + static void nautilus_icon_container_did_not_drag (NautilusIconContainer *container, GdkEventButton *event) { + int click_location; NautilusIconContainerDetails *details; + details = container->details; - + if (!button_event_modifies_selection (event) && !details->drag_icon->is_selected) { gboolean selection_changed; @@ -2571,7 +2600,8 @@ nautilus_icon_container_did_not_drag (NautilusIconContainer *container, * NautilusList goes the other way because its "links" seem * much more link-like. */ - activate_selected_items (container); + click_location = hit_test_item (details->drag_icon->item, event); + activate_selected_items (container, click_location); } } } @@ -3003,7 +3033,7 @@ key_press_event (GtkWidget *widget, break; case GDK_Return: case GDK_KP_Enter: - activate_selected_items (container); + activate_selected_items (container, 0); handled = TRUE; break; case GDK_Escape: @@ -3076,9 +3106,10 @@ nautilus_icon_container_initialize_class (NautilusIconContainerClass *class) object_class->type, GTK_SIGNAL_OFFSET (NautilusIconContainerClass, activate), - gtk_marshal_NONE__POINTER, - GTK_TYPE_NONE, 1, - GTK_TYPE_POINTER); + gtk_marshal_NONE__POINTER_INT, + GTK_TYPE_NONE, 2, + GTK_TYPE_POINTER, + GTK_TYPE_INT); signals[CONTEXT_CLICK_SELECTION] = gtk_signal_new ("context_click_selection", GTK_RUN_LAST, @@ -3549,7 +3580,7 @@ handle_icon_button_press (NautilusIconContainer *container, details->drag_button = 0; details->drag_icon = NULL; - activate_selected_items (container); + activate_selected_items (container, 0); } return TRUE; @@ -3704,7 +3735,7 @@ icon_destroy (NautilusIconContainer *container, /* activate any selected items in the container */ static void -activate_selected_items (NautilusIconContainer *container) +activate_selected_items (NautilusIconContainer *container, int select_location) { GList *selection; @@ -3714,7 +3745,8 @@ activate_selected_items (NautilusIconContainer *container) if (selection != NULL) { gtk_signal_emit (GTK_OBJECT (container), signals[ACTIVATE], - selection); + selection, + select_location); } g_list_free (selection); } diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c index a2ee0401f..60bfc3812 100644 --- a/src/file-manager/fm-icon-view.c +++ b/src/file-manager/fm-icon-view.c @@ -1333,14 +1333,57 @@ fm_icon_view_set_selection (FMDirectoryView *view, GList *selection) (get_icon_container (FM_ICON_VIEW (view)), selection); } +/* utility routine to return the specified keyword, given a file and emblem index */ +static char * +get_keyword_by_index (NautilusFile *file, int emblem_index) +{ + GList *keyword_list, *selected_keyword; + char *keyword; + + keyword_list = nautilus_file_get_emblem_names (file); + if (keyword_list == NULL) { + return NULL; + } + + selected_keyword = g_list_nth (keyword_list, emblem_index - 1); + if (selected_keyword == NULL) { + eel_g_list_free_deep (keyword_list); + return NULL; + } + + keyword = g_strdup (selected_keyword->data); + eel_g_list_free_deep (keyword_list); + + return keyword; +} + static void icon_container_activate_callback (NautilusIconContainer *container, GList *file_list, + int emblem_index, FMIconView *icon_view) { + char *keyword; + NautilusFile *file; + g_assert (FM_IS_ICON_VIEW (icon_view)); g_assert (container == get_icon_container (icon_view)); + /* if there is a single file to be activated, and the user clicked on an emblem, + * implement the emblem-specific action instead of activation. For now, + * we just handle annotations. + */ + if (emblem_index > 0 && file_list != NULL && file_list->next == NULL) { + file = NAUTILUS_FILE (file_list->data); + keyword = get_keyword_by_index (file, emblem_index); + if (eel_strcmp (keyword, "note") == 0) { + fm_annotation_window_present (file, FM_DIRECTORY_VIEW (icon_view)); + g_free (keyword); + return; + } + g_free (keyword); + } + fm_directory_view_activate_files (FM_DIRECTORY_VIEW (icon_view), file_list); } @@ -1908,23 +1951,10 @@ get_icon_annotation_callback (NautilusIconContainer *container, int emblem_index, FMIconView *icon_view) { - GList *keyword_list, *selected_keyword; char *keyword; - - keyword_list = nautilus_file_get_emblem_names (file); - if (keyword_list == NULL) { - return NULL; - } - - selected_keyword = g_list_nth (keyword_list, emblem_index - 1); - if (selected_keyword == NULL) { - eel_g_list_free_deep (keyword_list); - return NULL; - } - - keyword = g_strdup (selected_keyword->data); - eel_g_list_free_deep (keyword_list); + keyword = get_keyword_by_index (file, emblem_index); + /* if the keyword is "note", return the file annotation instead */ if (eel_strcmp (keyword, "note") == 0) { g_free (keyword); |