mirror of
https://github.com/fltk/fltk.git
synced 2026-05-28 20:06:18 +08:00
Guillaume's fix for Fl_Menu_::copy()
-Carl git-svn-id: file:///fltk/svn/fltk/branches/branch-1.0@525 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
+8
-5
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// "$Id: Fl_Menu_.cxx,v 1.7.2.1 1999/03/16 08:44:48 bill Exp $"
|
// "$Id: Fl_Menu_.cxx,v 1.7.2.2 1999/04/08 19:13:02 carl Exp $"
|
||||||
//
|
//
|
||||||
// Common menu code for the Fast Light Tool Kit (FLTK).
|
// Common menu code for the Fast Light Tool Kit (FLTK).
|
||||||
//
|
//
|
||||||
@@ -113,13 +113,16 @@ void Fl_Menu_::menu(const Fl_Menu_Item* m) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Fl_Menu_::copy(const Fl_Menu_Item* m, void* user_data) {
|
void Fl_Menu_::copy(const Fl_Menu_Item* m, void* user_data) {
|
||||||
int n = m->size()+1;
|
int i, s = m->size(), n=s;
|
||||||
|
for (i=0; n; n>>=1, i++);
|
||||||
|
n = 1 << i;
|
||||||
Fl_Menu_Item* newMenu = new Fl_Menu_Item[n];
|
Fl_Menu_Item* newMenu = new Fl_Menu_Item[n];
|
||||||
memcpy(newMenu, m, n*sizeof(Fl_Menu_Item));
|
memcpy(newMenu, m, s*sizeof(Fl_Menu_Item));
|
||||||
|
memset(newMenu+s, 0, (n-s)*sizeof(Fl_Menu_Item));
|
||||||
menu(newMenu);
|
menu(newMenu);
|
||||||
alloc = 1; // make destructor free it
|
alloc = 1; // make destructor free it
|
||||||
// for convienence, provide way to change all the user data pointers:
|
// for convienence, provide way to change all the user data pointers:
|
||||||
if (user_data) for (; n--;) {
|
if (user_data) for (; s--;) {
|
||||||
if (newMenu->callback_) newMenu->user_data_ = user_data;
|
if (newMenu->callback_) newMenu->user_data_ = user_data;
|
||||||
newMenu++;
|
newMenu++;
|
||||||
}
|
}
|
||||||
@@ -141,5 +144,5 @@ void Fl_Menu_::clear() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id: Fl_Menu_.cxx,v 1.7.2.1 1999/03/16 08:44:48 bill Exp $".
|
// End of "$Id: Fl_Menu_.cxx,v 1.7.2.2 1999/04/08 19:13:02 carl Exp $".
|
||||||
//
|
//
|
||||||
|
|||||||
Reference in New Issue
Block a user