Updating branch refs/heads/master to 32b011cb64dcd7806eb9dac77a799f24ebd5fa42 (commit) from 50755b7f775a54c351953966c3fcff9fdc2dbac2 (commit)
commit 32b011cb64dcd7806eb9dac77a799f24ebd5fa42 Author: Christian Dywan <christ...@twotoasts.de> Date: Sat Nov 6 00:54:52 2010 +0100 Rebuild proper filenames when toggling flags flags_from_filename() returns the filename without flags now. postler/postler-messages.vala | 28 +++++++++++++++------------- 1 files changed, 15 insertions(+), 13 deletions(-) diff --git a/postler/postler-messages.vala b/postler/postler-messages.vala index 9169285..4a9574f 100644 --- a/postler/postler-messages.vala +++ b/postler/postler-messages.vala @@ -359,20 +359,21 @@ public class Postler.Messages : Gtk.TreeView { return GLib.Time.local (timestamp).format ("%x %X"); } - static string flags_from_filename (string filename) { - unowned string? flagstart = null; - unowned string? versionstart = filename.chr (-1, ':'); - if (versionstart != null) - flagstart = versionstart.chr (-1, ','); - if (flagstart != null) - return flagstart.substring (1); - return ""; + static string flags_from_filename (string filename, out string bare_filename) { + string[]? parts = filename.split (":"); + if (parts == null || parts[0] == null || parts[1] == null) { + bare_filename = filename; + return ""; + } + bare_filename = parts[0]; + return parts[1]; } static string parse_flags (string name, out string flagged, out int weight) { /* format "unique:2,DFPRST", ordered alphabetically */ unowned string status = STOCK_MAIL_UNREAD; - string flags = flags_from_filename (name); + string bare_filename; + string flags = flags_from_filename (name, out bare_filename); if (flags == "") return status; @@ -601,10 +602,10 @@ public class Postler.Messages : Gtk.TreeView { internal static string toggle_flag (string location, char flag) { string folder = Path.get_dirname (location); - string filename = Path.get_basename (location); + string bare_filename; if (folder.has_suffix ("/new")) folder = folder.slice (0, -4) + "/cur"; - string flags = flags_from_filename (location); + string flags = flags_from_filename (location, out bare_filename); var new_flags = new StringBuilder (); bool did_include_flag = false; foreach (var character in flags.to_utf8 ()) { @@ -622,7 +623,7 @@ public class Postler.Messages : Gtk.TreeView { } if (!did_include_flag) new_flags.append_c (flag); - return folder + "/" + filename + new_flags.str; + return folder + "/" + Path.get_basename (bare_filename) + ":" + new_flags.str; } void toggle_message_flag (Gtk.TreeIter sort_iter, ref string location, char flag) { @@ -644,7 +645,8 @@ public class Postler.Messages : Gtk.TreeView { } void mark_message_read (Gtk.TreeIter sort_iter, ref string location) { - if (!flags_from_filename (location).contains ("S")) + string bare_filename; + if (!flags_from_filename (location, out bare_filename).contains ("S")) toggle_message_flag (sort_iter, ref location, 'S'); } _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits