svnno****@sourc*****
svnno****@sourc*****
Mon Feb 16 08:23:55 JST 2009
Revision: 3705 http://svn.sourceforge.jp/view?root=kazehakase&view=rev&rev=3705 Author: ikezoe Date: 2009-02-16 08:23:55 +0900 (Mon, 16 Feb 2009) Log Message: ----------- 2009-02-16 Hiroyuki Ikezoe <poinc****@ikezo*****> * src/bookmarks/kz-bookmark-file.[ch]: Added KZ_BOOKMARK_FILE_STATE_DISPOSING and set this in dispose(). * src/bookmarks/kz-sessions.c: Cascade parent class update method. * src/kz-xbel.c: Fix crash when emission of "update". Modified Paths: -------------- kazehakase/trunk/ChangeLog kazehakase/trunk/src/bookmarks/kz-bookmark-file.c kazehakase/trunk/src/bookmarks/kz-bookmark-file.h kazehakase/trunk/src/bookmarks/kz-session.c kazehakase/trunk/src/bookmarks/kz-xbel.c Modified: kazehakase/trunk/ChangeLog =================================================================== --- kazehakase/trunk/ChangeLog 2009-02-15 11:43:24 UTC (rev 3704) +++ kazehakase/trunk/ChangeLog 2009-02-15 23:23:55 UTC (rev 3705) @@ -1,3 +1,10 @@ +2009-02-16 Hiroyuki Ikezoe <poinc****@ikezo*****> + + * src/bookmarks/kz-bookmark-file.[ch]: Added + KZ_BOOKMARK_FILE_STATE_DISPOSING and set this in dispose(). + * src/bookmarks/kz-sessions.c: Cascade parent class update method. + * src/kz-xbel.c: Fix crash when emission of "update". + 2009-02-15 Hiroyuki Ikezoe <poinc****@ikezo*****> * src/kz-embed.c: suppress warnings. Modified: kazehakase/trunk/src/bookmarks/kz-bookmark-file.c =================================================================== --- kazehakase/trunk/src/bookmarks/kz-bookmark-file.c 2009-02-15 11:43:24 UTC (rev 3704) +++ kazehakase/trunk/src/bookmarks/kz-bookmark-file.c 2009-02-15 23:23:55 UTC (rev 3705) @@ -325,6 +325,8 @@ guint timer_id, io_id; KzIO *io; + kz_bookmark_file_set_state(KZ_BOOKMARK_FILE(object), KZ_BOOKMARK_FILE_STATE_DISPOSING); + timer_id = GPOINTER_TO_UINT(g_object_get_qdata(object, timer_quark)); if (timer_id) g_source_remove(timer_id); @@ -352,8 +354,8 @@ g_object_set_qdata(object, io_signal_id_quark, GUINT_TO_POINTER(io_id)); - if (G_OBJECT_CLASS (kz_bookmark_file_parent_class)->dispose) - G_OBJECT_CLASS (kz_bookmark_file_parent_class)->dispose(object); + if (G_OBJECT_CLASS(kz_bookmark_file_parent_class)->dispose) + G_OBJECT_CLASS(kz_bookmark_file_parent_class)->dispose(object); } @@ -527,13 +529,8 @@ static gboolean update (KzBookmarkFile *bookmark) { - gboolean processed = FALSE; + kz_bookmark_file_save(bookmark); - if (KZ_BOOKMARK_FILE_CLASS(kz_bookmark_file_parent_class)->update) - processed = KZ_BOOKMARK_FILE_CLASS(kz_bookmark_file_parent_class)->update(bookmark); - if (!processed) - kz_bookmark_file_save(bookmark); - return TRUE; } Modified: kazehakase/trunk/src/bookmarks/kz-bookmark-file.h =================================================================== --- kazehakase/trunk/src/bookmarks/kz-bookmark-file.h 2009-02-15 11:43:24 UTC (rev 3704) +++ kazehakase/trunk/src/bookmarks/kz-bookmark-file.h 2009-02-15 23:23:55 UTC (rev 3705) @@ -49,7 +49,8 @@ typedef enum { KZ_BOOKMARK_FILE_STATE_NORMAL, KZ_BOOKMARK_FILE_STATE_LOADING, - KZ_BOOKMARK_FILE_STATE_SAVING + KZ_BOOKMARK_FILE_STATE_SAVING, + KZ_BOOKMARK_FILE_STATE_DISPOSING } KzBookmarkFileState; struct _KzBookmarkFile Modified: kazehakase/trunk/src/bookmarks/kz-session.c =================================================================== --- kazehakase/trunk/src/bookmarks/kz-session.c 2009-02-15 11:43:24 UTC (rev 3704) +++ kazehakase/trunk/src/bookmarks/kz-session.c 2009-02-15 23:23:55 UTC (rev 3705) @@ -155,9 +155,9 @@ { KzSessionPrivate *priv = KZ_SESSION_GET_PRIVATE(bookmark); - if (priv->frozen) + if (priv->frozen || !priv->auto_save) return TRUE; - return !priv->auto_save; + return KZ_BOOKMARK_FILE_CLASS(kz_session_parent_class)->update(bookmark); } Modified: kazehakase/trunk/src/bookmarks/kz-xbel.c =================================================================== --- kazehakase/trunk/src/bookmarks/kz-xbel.c 2009-02-15 11:43:24 UTC (rev 3704) +++ kazehakase/trunk/src/bookmarks/kz-xbel.c 2009-02-15 23:23:55 UTC (rev 3705) @@ -232,14 +232,16 @@ KzBookmark *bookmark; KzXMLNode *node; const gchar *prop; - GValue value = { 0 }; + GValue value = { 0 }; + gboolean updated; g_return_if_fail(KZ_IS_BOOKMARK(object)); g_return_if_fail(KZ_IS_XML(xml)); bookmark = KZ_BOOKMARK(object); - if (BOOKMARK_IS_BUILDING(bookmark)) return; + if (BOOKMARK_IS_BUILDING(bookmark)) + return; node = kz_xml_get_root_element(xml); if (!node) return; @@ -264,7 +266,7 @@ g_value_unset(&value); /* emit update signal */ - g_signal_emit_by_name(object, "update", 0); + g_signal_emit_by_name(object, "update", &updated); } @@ -1216,20 +1218,30 @@ KzBookmark *child, KzBookmark *sibling, gpointer data) { + gboolean updated; + kz_xbel_insert_xml_node(child, bookmark, sibling); kz_xbel_connect_signals(child, data); - g_signal_emit_by_name(data, "update", 0); + if (kz_bookmark_file_get_state(KZ_BOOKMARK_FILE(data)) != + KZ_BOOKMARK_FILE_STATE_NORMAL) + return; + g_signal_emit_by_name(data, "update", &updated); } static void cb_bookmark_remove_child (KzBookmark *bookmark, KzBookmark *child, gpointer data) { + gboolean updated; + kz_xbel_disconnect_signals(child, data); kz_xbel_remove_xml_node(child); - g_signal_emit_by_name(data, "update", 0); + if (kz_bookmark_file_get_state(KZ_BOOKMARK_FILE(data)) != + KZ_BOOKMARK_FILE_STATE_NORMAL) + return; + g_signal_emit_by_name(data, "update", &updated); } @@ -1326,12 +1338,14 @@ KzBookmark *bookmark; KzXMLNode *node; const gchar *prop; - GValue value = { 0 }; + GValue value = { 0 }; + gboolean updated; g_return_if_fail(KZ_IS_BOOKMARK(object)); bookmark = KZ_BOOKMARK(object); - if (BOOKMARK_IS_BUILDING(bookmark)) return; + if (BOOKMARK_IS_BUILDING(bookmark)) + return; node = g_object_get_qdata(G_OBJECT(bookmark), node_quark); g_return_if_fail(node); @@ -1513,7 +1527,7 @@ kz_xml_node_set_attr(metanode, "kz:javascript", str); } g_value_unset(&value); - g_signal_emit_by_name(data, "update", 0); + g_signal_emit_by_name(data, "update", &updated); }