--- a/mcabber/doc/mcabber.1 Mon Oct 31 23:06:55 2005 +0100
+++ b/mcabber/doc/mcabber.1 Fri Nov 11 22:47:28 2005 +0100
@@ -175,7 +175,7 @@
.TP
\fB/move\fR [groupname]
-Move the current buddy to the requested group\&. If no group is specified, then the buddy is moved to the default group\&. This command only works with users (not agents), at the moment\&.
+Move the current buddy to the requested group\&. If no group is specified, then the buddy is moved to the default group\&. This command only works with users (not agents), at the moment\&. Tip: if the chatmode is enabled, you can use "/roster alternate" to jump to the moved buddy\&.
.TP
\fB/msay\fR begin|verbatim|send|abort
--- a/mcabber/doc/mcabber.1.html Mon Oct 31 23:06:55 2005 +0100
+++ b/mcabber/doc/mcabber.1.html Fri Nov 11 22:47:28 2005 +0100
@@ -2,7 +2,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<meta name="generator" content="AsciiDoc 7.0.1" />
+<meta name="generator" content="AsciiDoc 7.0.2" />
<meta name="author" content="Mikael BERTHE" />
<meta name="author-email" content="mcabber@lilotux.net" />
<link rel="stylesheet" href="./manpage.css" type="text/css" />
@@ -366,7 +366,9 @@
<dd>
Move the current buddy to the requested group. If no group is
specified, then the buddy is moved to the default group.
- This command only works with users (not agents), at the moment.
+ This command only works with users (not agents), at the moment.<br />
+ Tip: if the chatmode is enabled, you can use "/roster alternate"
+ to jump to the moved buddy.
</dd>
<dt><b>
/msay begin|verbatim|send|abort
@@ -677,8 +679,8 @@
License (GPL).</p>
<div id="footer">
<p>
-Version 0.7.0<br />
-Last updated 09-Oct-2005 22:02:06 CEST
+Version 0.7.1-dev<br />
+Last updated 11-Nov-2005 22:43:12 CEST
</p>
</div>
</div>
--- a/mcabber/doc/mcabber.1.txt Mon Oct 31 23:06:55 2005 +0100
+++ b/mcabber/doc/mcabber.1.txt Fri Nov 11 22:47:28 2005 +0100
@@ -146,7 +146,9 @@
/move [groupname]::
Move the current buddy to the requested group. If no group is
specified, then the buddy is moved to the default group.
- This command only works with users (not agents), at the moment.
+ This command only works with users (not agents), at the moment. +
+ Tip: if the chatmode is enabled, you can use "/roster alternate"
+ to jump to the moved buddy.
/msay begin|verbatim|send|abort::
Send a multi-line message. To write a single message with several
--- a/mcabber/src/commands.c Mon Oct 31 23:06:55 2005 +0100
+++ b/mcabber/src/commands.c Fri Nov 11 22:47:28 2005 +0100
@@ -944,6 +944,7 @@
// clones the buddy and deletes the old one (and thus, jid and name are
// freed)
jb_updatebuddy(jid, name, newgroupname);
+ scr_RosterUp();
buddy_setgroup(bud, newgroupname);
g_free(newgroupname);
--- a/mcabber/src/roster.c Mon Oct 31 23:06:55 2005 +0100
+++ b/mcabber/src/roster.c Fri Nov 11 22:47:28 2005 +0100
@@ -676,16 +676,15 @@
// buddy_setgroup()
// Change the group of current buddy
//
-// Warning! This function changes current_buddy!
-// Warning! Old buddy is deleted, so you can't acces to its jid/name after
-// calling this function.
+// Warning! This function changes the specified buddy!
+// Warning! Old buddy is deleted, so you can't access to its jid/name after
+// calling this function (they are free'd).
void buddy_setgroup(gpointer rosterdata, char *newgroupname)
{
roster *roster_usr = rosterdata;
GSList **sl_group;
GSList *sl_clone;
roster *roster_clone;
- int is_alternate;
// A group has no group :)
if (roster_usr->type & ROSTER_TYPE_GROUP) return;
@@ -709,16 +708,17 @@
free_all_resources(&roster_usr->resource);
g_free(roster_usr);
- // If new new group is folded, the curren_buddy will be lost, and the
- // chat window won't be correctly refreshed. So we make sure it isn't...
- ((roster*)((GSList*)roster_clone->list)->data)->flags &= ~ROSTER_FLAG_HIDE;
-
- // Little trick to have current_body pointing to the cloned buddy
- is_alternate = (alternate_buddy == current_buddy);
buddylist = g_list_append(buddylist, roster_clone);
- current_buddy = g_list_find(buddylist, roster_clone);
- if (is_alternate)
- alternate_buddy = current_buddy;
+ // We must have current_buddy pointing to the cloned buddy, if this is
+ // the one we have moved. Same for alternate_buddy.
+ if (rosterdata == BUDDATA(current_buddy)) {
+ current_buddy = g_list_find(buddylist, roster_clone);
+ // If new new group is folded, the current_buddy will be lost, and the
+ // chat window won't be correctly refreshed. So we make sure it isn't...
+ ((roster*)((GSList*)roster_clone->list)->data)->flags &= ~ROSTER_FLAG_HIDE;
+ }
+ if (alternate_buddy && BUDDATA(alternate_buddy) == rosterdata)
+ alternate_buddy = g_list_find(buddylist, roster_clone);
buddylist_build();
}