Index: libeog/eog-info-view-exif.c
===================================================================
RCS file: /cvs/gnome/eog/libeog/eog-info-view-exif.c,v
retrieving revision 1.11
diff -u -p -r1.11 eog-info-view-exif.c
--- libeog/eog-info-view-exif.c	10 Nov 2006 18:16:25 -0000	1.11
+++ libeog/eog-info-view-exif.c	18 Dec 2006 19:30:31 -0000
@@ -155,6 +155,8 @@ struct _EogInfoViewExifPrivate
 
 	GHashTable   *id_path_hash; /* saves the stringified GtkTreeModel path  
 				       for a given EXIF entry id */
+
+	GHashTable   *id_path_hash_mnote;
 };
 
 G_DEFINE_TYPE (EogInfoViewExif, eog_info_view_exif, EOG_TYPE_INFO_VIEW_DETAIL)
@@ -189,6 +191,10 @@ eog_info_view_exif_dispose (GObject *obj
 		g_hash_table_destroy (priv->id_path_hash);
 		priv->id_path_hash = NULL;
 	}
+	if (priv->id_path_hash_mnote) {
+		g_hash_table_destroy (priv->id_path_hash_mnote);
+		priv->id_path_hash_mnote = NULL;
+	}
 }
 
 static void
@@ -205,6 +211,7 @@ eog_info_view_exif_init (EogInfoViewExif
 
 	priv->model = GTK_TREE_MODEL (gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_STRING));
 	priv->id_path_hash = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
+	priv->id_path_hash_mnote = g_hash_table_new_full (g_direct_hash, g_direct_equal, NULL, g_free);
 
 	/* tag column */
 	cell = gtk_cell_renderer_text_new ();
@@ -340,12 +347,33 @@ exif_entry_cb (ExifEntry *entry, gpointe
 		set_row_data (store, path, NULL, exif_tag_get_name (entry->tag), exif_entry_get_value (entry, b, sizeof(b)));	
 	}
 	else {
-		cat = get_exif_category (entry);
-		path = set_row_data (store, NULL, exif_categories[cat].path,
-				     exif_tag_get_name (entry->tag), exif_entry_get_value (entry, b, sizeof(b)));	
-		g_hash_table_insert (priv->id_path_hash,
-				     GINT_TO_POINTER (entry->tag),
-				     path);
+		ExifMnoteData *mnote = (entry->tag == EXIF_TAG_MAKER_NOTE ? 
+										exif_data_get_mnote_data (entry->parent->parent) : 
+										0);
+		if (mnote) {
+			// Supported MakerNote Found
+			unsigned int i, c = exif_mnote_data_count (mnote);
+			for (i = 0; i < c; i++) {
+				path = g_hash_table_lookup (priv->id_path_hash_mnote, i);
+				if (path != NULL) {
+					set_row_data (store, path, NULL, 
+						exif_mnote_data_get_title (mnote, i), 
+						exif_mnote_data_get_value (mnote, i, b, sizeof(b)));	
+				} else {
+					path = set_row_data (store, NULL, exif_categories[EXIF_CATEGORY_MAKER_NOTE].path,
+						exif_mnote_data_get_title (mnote, i), 
+						exif_mnote_data_get_value (mnote, i, b, sizeof(b)));
+					g_hash_table_insert (priv->id_path_hash_mnote, i, path);
+				}
+			}
+		} else {
+			cat = get_exif_category (entry);
+			path = set_row_data (store, NULL, exif_categories[cat].path,
+					     exif_tag_get_name (entry->tag), exif_entry_get_value (entry, b, sizeof(b)));	
+			g_hash_table_insert (priv->id_path_hash,
+					     GINT_TO_POINTER (entry->tag),
+					     path);
+		}
 	}
 }
 
