* [PATCH] thread: reinstates stable ordering when ghosts are present
@ 2016-10-14 21:17 7% ` Eric Wong
0 siblings, 0 replies; 1+ results
From: Eric Wong @ 2016-10-14 21:17 UTC (permalink / raw)
To: meta
This reverts commit 3c9dd6619f825f0515e7e4afa1bd55c99c1a68d3
("thread: fix sorting without topmost")
and reinstates the "topmost" routine for sorting purposes.
---
lib/PublicInbox/SearchThread.pm | 10 ++++++++++
lib/PublicInbox/SearchView.pm | 5 +++--
lib/PublicInbox/View.pm | 4 ++--
3 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/lib/PublicInbox/SearchThread.pm b/lib/PublicInbox/SearchThread.pm
index 24a56d2..fe70406 100644
--- a/lib/PublicInbox/SearchThread.pm
+++ b/lib/PublicInbox/SearchThread.pm
@@ -98,6 +98,16 @@ sub new {
}, $_[0];
}
+sub topmost {
+ my ($self) = @_;
+ my @q = ($self);
+ while (my $cont = shift @q) {
+ return $cont if $cont->{smsg};
+ push @q, values %{$cont->{children}};
+ }
+ undef;
+}
+
sub add_child {
my ($self, $child) = @_;
croak "Cowardly refusing to become my own parent: $self"
diff --git a/lib/PublicInbox/SearchView.pm b/lib/PublicInbox/SearchView.pm
index cfe6dff..ebeb41f 100644
--- a/lib/PublicInbox/SearchView.pm
+++ b/lib/PublicInbox/SearchView.pm
@@ -155,8 +155,9 @@ sub mset_thread {
$th->thread;
if ($q->{r}) { # order by relevance
$th->order(sub {
- [ sort { ( $pct{$b->{id}} || 0) <=>
- ( $pct{$a->{id}} || 0)
+ [ sort { (eval { $pct{$b->topmost->{id}} } || 0)
+ <=>
+ (eval { $pct{$a->topmost->{id}} } || 0)
} @{$_[0]} ];
});
} else { # order by time (default for threaded view)
diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm
index 0f00458..5d5808f 100644
--- a/lib/PublicInbox/View.pm
+++ b/lib/PublicInbox/View.pm
@@ -852,8 +852,8 @@ sub skel_dump {
sub sort_ts {
[ sort {
- (eval { $a->{smsg}->ts } || 0) <=>
- (eval { $b->{smsg}->ts } || 0)
+ (eval { $a->topmost->{smsg}->ts } || 0) <=>
+ (eval { $b->topmost->{smsg}->ts } || 0)
} @{$_[0]} ];
}
--
EW
^ permalink raw reply related [relevance 7%]
Results 1-1 of 1 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2016-10-05 23:57 [PATCH 0/17] remove Mail::Thread dependency Eric Wong
2016-10-05 23:57 ` [PATCH 13/17] thread: fix sorting without topmost Eric Wong
2016-10-14 21:17 7% ` [PATCH] thread: reinstates stable ordering when ghosts are present Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).