mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-07 12:20:39 -08:00
(menu_bar_items): When moving an item to the end,
shift all the following ones forward one slot.
This commit is contained in:
parent
93b4f69974
commit
0301268e2b
1 changed files with 14 additions and 11 deletions
|
|
@ -3558,17 +3558,20 @@ menu_bar_items (old)
|
|||
for (i = 0; i < end; i += 3)
|
||||
if (EQ (XCONS (tail)->car, XVECTOR (menu_bar_items_vector)->contents[i]))
|
||||
{
|
||||
Lisp_Object tem;
|
||||
end -= 3;
|
||||
#define EXCH(a, b) tem = a, a = b, b = tem
|
||||
EXCH (XVECTOR (menu_bar_items_vector)->contents[i],
|
||||
XVECTOR (menu_bar_items_vector)->contents[end]);
|
||||
EXCH (XVECTOR (menu_bar_items_vector)->contents[i + 1],
|
||||
XVECTOR (menu_bar_items_vector)->contents[end + 1]);
|
||||
EXCH (XVECTOR (menu_bar_items_vector)->contents[i + 2],
|
||||
XVECTOR (menu_bar_items_vector)->contents[end + 2]);
|
||||
#undef EXCH
|
||||
i -= 3;
|
||||
Lisp_Object tem0, tem1, tem2;
|
||||
/* Move the item at index I to the end,
|
||||
shifting all the others forward. */
|
||||
tem0 = XVECTOR (menu_bar_items_vector)->contents[i + 0];
|
||||
tem1 = XVECTOR (menu_bar_items_vector)->contents[i + 1];
|
||||
tem2 = XVECTOR (menu_bar_items_vector)->contents[i + 2];
|
||||
if (end > i + 3)
|
||||
bcopy (&XVECTOR (menu_bar_items_vector)->contents[i + 3],
|
||||
&XVECTOR (menu_bar_items_vector)->contents[i],
|
||||
(end - i - 3) * sizeof (Lisp_Object));
|
||||
XVECTOR (menu_bar_items_vector)->contents[end - 3] = tem0;
|
||||
XVECTOR (menu_bar_items_vector)->contents[end - 2] = tem1;
|
||||
XVECTOR (menu_bar_items_vector)->contents[end - 1] = tem2;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue