diff options
| -rw-r--r-- | FL/Fl.H | 9 | ||||
| -rw-r--r-- | FL/Fl_Menu_.H | 5 | ||||
| -rw-r--r-- | FL/fl_draw.H | 22 | ||||
| -rw-r--r-- | documentation/Fl_Menu_.html | 8 | ||||
| -rw-r--r-- | src/Fl_Menu_.cxx | 34 | ||||
| -rw-r--r-- | src/Fl_Menu_Window.cxx | 63 | ||||
| -rw-r--r-- | src/Fl_Menu_add.cxx | 120 | ||||
| -rw-r--r-- | src/Fl_grab.cxx | 93 | ||||
| -rw-r--r-- | src/Fl_win32.cxx | 6 | ||||
| -rw-r--r-- | src/Fl_x.cxx | 7 | ||||
| -rw-r--r-- | src/Makefile | 6 | ||||
| -rw-r--r-- | test/subwindow.cxx | 46 |
12 files changed, 273 insertions, 146 deletions
@@ -1,5 +1,5 @@ // -// "$Id: Fl.H,v 1.4 1999/01/07 19:16:50 mike Exp $" +// "$Id: Fl.H,v 1.5 1999/02/03 08:43:29 bill Exp $" // // Main header file for the Fast Light Tool Kit (FLTK). // @@ -104,8 +104,7 @@ public: static Fl_Window* next_window(const Fl_Window*); static Fl_Window* modal() {return modal_;} static Fl_Window* grab() {return grab_;} - static void grab(Fl_Window&); - static void release(); + static void grab(Fl_Window*); // event information: static int event_x() {return e_x;} @@ -192,11 +191,13 @@ public: static int event_button2() {return e_state&FL_BUTTON2;} static int event_button3() {return e_state&FL_BUTTON3;} static void set_idle(void (*cb)()) {idle = cb;} + static void grab(Fl_Window&w) {grab(&w);} + static void release() {grab(0);} }; #endif // -// End of "$Id: Fl.H,v 1.4 1999/01/07 19:16:50 mike Exp $". +// End of "$Id: Fl.H,v 1.5 1999/02/03 08:43:29 bill Exp $". // diff --git a/FL/Fl_Menu_.H b/FL/Fl_Menu_.H index 11800f7b1..b5c21acf2 100644 --- a/FL/Fl_Menu_.H +++ b/FL/Fl_Menu_.H @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_.H,v 1.5 1999/01/07 19:16:57 mike Exp $" +// "$Id: Fl_Menu_.H,v 1.6 1999/02/03 08:43:30 bill Exp $" // // Menu base class header file for the Fast Light Tool Kit (FLTK). // @@ -55,6 +55,7 @@ public: const Fl_Menu_Item *menu() const {return menu_;} void menu(const Fl_Menu_Item *m); + void copy(const Fl_Menu_Item *m, void* user_data = 0); int add(const char*, int shortcut, Fl_Callback*, void* = 0, int = 0); int add(const char* a, const char* b, Fl_Callback* c, void* d = 0, int e = 0) {return add(a,fl_old_shortcut(b),c,d,e);} @@ -92,5 +93,5 @@ public: #endif // -// End of "$Id: Fl_Menu_.H,v 1.5 1999/01/07 19:16:57 mike Exp $". +// End of "$Id: Fl_Menu_.H,v 1.6 1999/02/03 08:43:30 bill Exp $". // diff --git a/FL/fl_draw.H b/FL/fl_draw.H index 46a88ebc9..db7d706d0 100644 --- a/FL/fl_draw.H +++ b/FL/fl_draw.H @@ -1,5 +1,5 @@ // -// "$Id: fl_draw.H,v 1.6 1999/01/07 19:17:06 mike Exp $" +// "$Id: fl_draw.H,v 1.7 1999/02/03 08:43:30 bill Exp $" // // Portable drawing function header file for the Fast Light Tool Kit (FLTK). // @@ -42,6 +42,24 @@ void fl_pop_clip(); int fl_not_clipped(int x, int y, int w, int h); int fl_clip_box(int, int, int, int, int& x, int& y, int& w, int& h); +// line style: +// Enumerations chosen so zero is the default, unfortunatly this does +// not match values for either X or Windows... +enum Fl_LineStyle { + FL_SOLID = 0, + FL_DASH = 1, + FL_DOT = 2, + FL_DASHDOT = 3, + FL_DASHDOTDOT = 4, + FL_CAP_FLAT = 0x0100, + FL_CAP_ROUND = 0x0200, + FL_CAP_SQUARE = 0x0300, + FL_JOIN_MITER = 0x1000, + FL_JOIN_ROUND = 0x2000, + FL_JOIN_BEVEL = 0x3000, +}; +void fl_line_style(int style, int width = 0, char* dashes = 0); + // points: void fl_point(int x, int y); @@ -158,5 +176,5 @@ int fl_add_symbol(const char* name, void (*drawit)(Fl_Color), int scalable); #endif // -// End of "$Id: fl_draw.H,v 1.6 1999/01/07 19:17:06 mike Exp $". +// End of "$Id: fl_draw.H,v 1.7 1999/02/03 08:43:30 bill Exp $". // diff --git a/documentation/Fl_Menu_.html b/documentation/Fl_Menu_.html index 3120ccb76..69f5b1efc 100644 --- a/documentation/Fl_Menu_.html +++ b/documentation/Fl_Menu_.html @@ -40,20 +40,21 @@ methods to build it dynamically. </P> </UL> </TD><TD align=left valign=top> <UL> +<LI><A href=#Fl_Menu_.copy>copy</A></LI> <LI><A href=#Fl_Menu_.down_box>down_box</A></LI> <LI><A href=#Fl_Menu_.global>global</A></LI> <LI><A href=#Fl_Menu_.menu>menu</A></LI> -<LI><A href=#Fl_Menu_.mode>mode</A></LI> </UL> </TD><TD align=left valign=top> <UL> +<LI><A href=#Fl_Menu_.mode>mode</A></LI> <LI><A href=#Fl_Menu_.remove>remove</A></LI> <LI><A href=#Fl_Menu_.replace>replace</A></LI> <LI><A href=#Fl_Menu_.shortcut>shortcut</A></LI> -<LI><A href=#Fl_Menu_.size>size</A></LI> </UL> </TD><TD align=left valign=top> <UL> +<LI><A href=#Fl_Menu_.size>size</A></LI> <LI><A href=#Fl_Menu_.test_shortcut>test_shortcut</A></LI> <LI><A href=#Fl_Menu_.text>text</A></LI> <LI><A href=#Fl_Menu_.textcolor>textcolor</A></LI> @@ -77,6 +78,9 @@ and label string. The default boxtype is <TT>FL_NO_BOX</TT>. <BR> void Fl_Menu_::menu(const Fl_Menu_Item*)</A></H4> Get or set the menu array directly. Setting it to <TT>NULL</TT> indicates that you want the widget to allocate its own array. +<H4><A name=Fl_Menu_.copy>void Fl_Menu_::copy(const Fl_Menu_Item*)</A></H4> + Set the menu array to a copy of the passed array. This copy will be + deleted when the Fl_Menu_ is deleted. <H4><A name=Fl_Menu_.value>int Fl_Menu_::value() const <BR> int Fl_Menu_::value(int) <BR> int Fl_Menu_::value(const Fl_Menu_Item*)</A></H4> diff --git a/src/Fl_Menu_.cxx b/src/Fl_Menu_.cxx index 8441212a1..fd2f1bcd4 100644 --- a/src/Fl_Menu_.cxx +++ b/src/Fl_Menu_.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_.cxx,v 1.5 1999/01/07 19:17:22 mike Exp $" +// "$Id: Fl_Menu_.cxx,v 1.6 1999/02/03 08:43:32 bill Exp $" // // Common menu code for the Fast Light Tool Kit (FLTK). // @@ -32,9 +32,9 @@ #include <FL/Fl.H> #include <FL/Fl_Menu_.H> +#include <string.h> #include <stdlib.h> - int Fl_Menu_::value(const Fl_Menu_Item* m) { clear_changed(); if (value_ != m) {value_ = m; return 1;} @@ -105,15 +105,37 @@ int Fl_Menu_::size() const { } void Fl_Menu_::menu(const Fl_Menu_Item* m) { - // if (alloc) clear(); - alloc = 0; + clear(); value_ = menu_ = (Fl_Menu_Item*)m; } +void Fl_Menu_::copy(const Fl_Menu_Item* m, void* user_data) { + int n = m->size()+1; + Fl_Menu_Item* newMenu = new Fl_Menu_Item[n]; + memcpy(newMenu, m, n*sizeof(Fl_Menu_Item)); + menu(newMenu); + alloc = 1; // make destructor free it + // for convienence, provide way to change all the user data pointers: + if (user_data) for (; n--;) { + if (newMenu->callback_) newMenu->user_data_ = user_data; + newMenu++; + } +} + Fl_Menu_::~Fl_Menu_() { - // if (alloc) clear(); + clear(); +} + +void Fl_Menu_::clear() { + if (alloc) { + if (alloc>1) for (int i = size(); i--;) + if (menu_[i].text) free((void*)menu_[i].text); + delete[] menu_; + menu_ = 0; + alloc = 0; + } } // -// End of "$Id: Fl_Menu_.cxx,v 1.5 1999/01/07 19:17:22 mike Exp $". +// End of "$Id: Fl_Menu_.cxx,v 1.6 1999/02/03 08:43:32 bill Exp $". // diff --git a/src/Fl_Menu_Window.cxx b/src/Fl_Menu_Window.cxx index ad4cdaf9e..16248115a 100644 --- a/src/Fl_Menu_Window.cxx +++ b/src/Fl_Menu_Window.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_Window.cxx,v 1.7 1999/01/07 19:17:23 mike Exp $" +// "$Id: Fl_Menu_Window.cxx,v 1.8 1999/02/03 08:43:33 bill Exp $" // // Menu window code for the Fast Light Tool Kit (FLTK). // @@ -96,65 +96,6 @@ Fl_Menu_Window::~Fl_Menu_Window() { hide(); } -//////////////////////////////////////////////////////////////// -// "Grab" is done while menu systems are up. This has several effects: -// Events are all sent to the "grab window", which does not even -// have to be displayed (and in the case of Fl_Menu.C it isn't). -// Under X override_redirect and save_under is done to new windows. -// The system is also told to "grab" events and send them to this app. - -extern void fl_fix_focus(); - -#ifdef WIN32 -// We have to keep track of whether we have captured the mouse, since -// MSWindows shows little respect for this... Grep for fl_capture to -// see where and how this is used. -HWND fl_capture; -#endif - -void Fl::grab(Fl_Window& w) { - grab_ = &w; -#ifdef WIN32 - SetActiveWindow(fl_capture = fl_xid(first_window())); - SetCapture(fl_capture); -#else - XGrabPointer(fl_display, - fl_xid(first_window()), - 1, - ButtonPressMask|ButtonReleaseMask| - ButtonMotionMask|PointerMotionMask, - GrabModeAsync, - GrabModeAsync, - None, - 0, - fl_event_time); - XGrabKeyboard(fl_display, - fl_xid(first_window()), - 1, - GrabModeAsync, - GrabModeAsync, - fl_event_time); -#endif -} - -extern void fl_send_extra_move(); // in Fl.cxx - -void Fl::release() { - grab_ = 0; -#ifdef WIN32 - fl_capture = 0; - ReleaseCapture(); -#else - XUngrabKeyboard(fl_display, fl_event_time); - XUngrabPointer(fl_display, fl_event_time); - // this flush is done in case the picked menu item goes into - // an infinite loop, so we don't leave the X server locked up: - XFlush(fl_display); -#endif - fl_send_extra_move(); - return; -} - // -// End of "$Id: Fl_Menu_Window.cxx,v 1.7 1999/01/07 19:17:23 mike Exp $". +// End of "$Id: Fl_Menu_Window.cxx,v 1.8 1999/02/03 08:43:33 bill Exp $". // diff --git a/src/Fl_Menu_add.cxx b/src/Fl_Menu_add.cxx index cb6b91b4d..0b50ec3fd 100644 --- a/src/Fl_Menu_add.cxx +++ b/src/Fl_Menu_add.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_Menu_add.cxx,v 1.6 1999/01/29 16:56:48 carl Exp $" +// "$Id: Fl_Menu_add.cxx,v 1.7 1999/02/03 08:43:33 bill Exp $" // // Menu utilities for the Fast Light Tool Kit (FLTK). // @@ -41,20 +41,44 @@ // always allocate this much initially: #define INITIAL_MENU_SIZE 15 -// as menu array size passes through each power of two, the memory -// array allocated is doubled in size: -static Fl_Menu_Item* incr_array(Fl_Menu_Item* array, int size) { - if (size < INITIAL_MENU_SIZE) return array; - if ((size+1) & size) return array; // not a power of 2 - Fl_Menu_Item* newarray = new Fl_Menu_Item[size*2+1]; - for (int i = 0; i <= size; i++) newarray[i] = array[i]; - delete[] array; - return newarray; -} - // if this local pointer is set, array is reallocated and put here: static Fl_Menu_Item** alloc; +// Insert a single Fl_Menu_Item into an array at offset n. If ::alloc +// is not zero, the array may be reallocated. This is done each time +// it's size passes through a power of 2. The new (or old) array is +// returned. +// Notice that size does not count the trailing null item, so one more +// item than you think must be copied. +static Fl_Menu_Item* insert( + Fl_Menu_Item* array, int size, + int n, + const char *text, + int flags) { + // If new size is a power of two, we reallocate to the next power + // of two: + if (alloc && size >= INITIAL_MENU_SIZE && !((size+1)&size)) { + Fl_Menu_Item* newarray = new Fl_Menu_Item[(size+1)*2]; + memcpy(newarray, array, (size+1)*sizeof(Fl_Menu_Item)); + delete[] array; + *alloc = array = newarray; + } + // move all the later items: + memmove(array+n+1, array+n, sizeof(Fl_Menu_Item)*(size-n+1)); + // create the new item: + Fl_Menu_Item* m = array+n; + m->text = text ? strdup(text) : 0; + m->shortcut_ = 0; + m->callback_ = 0; + m->user_data_ = 0; + m->flags = flags; + m->labeltype_ = m->labelfont_ = m->labelsize_ = m->labelcolor_ = 0; + return array; +} + +// Add an item. The text is split at '/' characters to automatically +// produce submenus (actually a totally unnecessary feature as you can +// now add submenu titles directly by setting SUBMENU in the flags): int Fl_Menu_Item::add( const char *text, int shortcut, @@ -85,27 +109,17 @@ int Fl_Menu_Item::add( /* find a matching menu title: */ for (; m->text; m = m->next()) - if (m->flags&FL_SUBMENU && !strcmp(item,m->text)) break; + if (m->flags&FL_SUBMENU && !strcmp(item, m->text)) break; if (!m->text) { /* create a new menu */ - if (alloc) { - int n = m-array; - array = incr_array(array,size); - array = incr_array(array,size+1); - *alloc = array; - m = array+n; - } - memmove(m+2,m,sizeof(Fl_Menu_Item)*(array+size-m)); - m->text = strdup(item); - m->shortcut_ = 0; - m->callback_ = 0; - m->user_data_ = 0; - m->flags = FL_SUBMENU|flags1; - m->labeltype_ = m->labelfont_ = m->labelsize_ = m->labelcolor_ = 0; - (m+1)->text = 0; - size += 2; + int n = m-array; + array = insert(array, size, n, item, FL_SUBMENU|flags1); + size++; + array = insert(array, size, n+1, 0, 0); + size++; + m = array+n; } - m++; /* go into the menu */ + m++; /* go into the submenu */ flags1 = 0; } @@ -114,22 +128,20 @@ int Fl_Menu_Item::add( if (!strcmp(m->text,item)) break; if (!m->text) { /* add a new menu item */ - if (alloc) { - int n = m-array; - *alloc = array = incr_array(array,size); - m = array+n; - } - memmove(m+1,m,sizeof(Fl_Menu_Item)*(array+size-m)); + int n = m-array; + array = insert(array, size, n, item, flags|flags1); size++; - m->text = strdup(item); + if (flags & FL_SUBMENU) { // add submenu delimiter + array = insert(array, size, n+1, 0, 0); + size++; + } + m = array+n; } /* fill it in */ m->shortcut_ = shortcut; m->callback_ = cb; m->user_data_ = data; - m->flags = flags|flags1; - m->labeltype_ = m->labelfont_ = m->labelsize_ = m->labelcolor_ = 0; return m-array; } @@ -137,8 +149,8 @@ int Fl_Menu_Item::add( int Fl_Menu_::add(const char *t, int s, Fl_Callback *c,void *v,int f) { int n = value_ ? value_ - menu_ : 0; if (!menu_) { - alloc = 1; - menu_ = new Fl_Menu_Item[INITIAL_MENU_SIZE]; + alloc = 2; // indicates that the strings can be freed + menu_ = new Fl_Menu_Item[INITIAL_MENU_SIZE+1]; menu_[0].text = 0; } if (alloc) ::alloc = &menu_; @@ -148,6 +160,8 @@ int Fl_Menu_::add(const char *t, int s, Fl_Callback *c,void *v,int f) { return r; } +// This is a Forms (and SGI GL library) compatable add function, it +// adds strings of the form "name\tshortcut|name\tshortcut|..." int Fl_Menu_::add(const char *str) { char buf[128]; int r = 0; @@ -167,30 +181,20 @@ int Fl_Menu_::add(const char *str) { void Fl_Menu_::replace(int i, const char *str) { if (i<0 || i>=size()) return; - if (alloc) free((void *)menu_[i].text); - menu_[i].text = strdup(str); + if (alloc > 1) { + free((void *)menu_[i].text); + str = strdup(str); + } + menu_[i].text = str; } void Fl_Menu_::remove(int i) { int n = size(); if (i<0 || i>=n) return; - if (alloc) free((void *)menu_[i].text); + if (alloc > 1) free((void *)menu_[i].text); memmove(&menu_[i],&menu_[i+1],(n-i)*sizeof(Fl_Menu_Item)); } -void Fl_Menu_::clear() { - for (int i = size(); i--;) - if (menu_[i].text) free((void*)menu_[i].text); - if (alloc) { - delete[] menu_; - menu_ = 0; - alloc = 0; - } else if (menu_) { - menu_[0].text = 0; - value_ = menu_; - } -} - // -// End of "$Id: Fl_Menu_add.cxx,v 1.6 1999/01/29 16:56:48 carl Exp $". +// End of "$Id: Fl_Menu_add.cxx,v 1.7 1999/02/03 08:43:33 bill Exp $". // diff --git a/src/Fl_grab.cxx b/src/Fl_grab.cxx new file mode 100644 index 000000000..8626a7cf6 --- /dev/null +++ b/src/Fl_grab.cxx @@ -0,0 +1,93 @@ +// +// "$Id: Fl_grab.cxx,v 1.1 1999/02/03 08:43:33 bill Exp $" +// +// Grab/release code for the Fast Light Tool Kit (FLTK). +// +// Copyright 1998-1999 by Bill Spitzak and others. +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 +// USA. +// +// Please report all bugs and problems to "fltk-bugs@easysw.com". +// + +#include <config.h> +#include <FL/Fl.H> +#include <FL/x.H> + +//////////////////////////////////////////////////////////////// +// "Grab" is done while menu systems are up. This has several effects: +// Events are all sent to the "grab window", which does not even +// have to be displayed (and in the case of Fl_Menu.C it isn't). +// The system is also told to "grab" events and send them to this app. +// This also modifies how Fl_Window::show() works, on X it turns on +// override_redirect, it does similar things on WIN32. + +extern void fl_send_extra_move(); // in Fl.cxx + +#ifdef WIN32 +// We have to keep track of whether we have captured the mouse, since +// MSWindows shows little respect for this... Grep for fl_capture to +// see where and how this is used. +extern HWND fl_capture; +#endif + +void Fl::grab(Fl_Window* w) { + if (w) { + if (!grab_) { +#ifdef WIN32 + SetActiveWindow(fl_capture = fl_xid(first_window())); + SetCapture(fl_capture); +#else + XGrabPointer(fl_display, + fl_xid(first_window()), + 1, + ButtonPressMask|ButtonReleaseMask| + ButtonMotionMask|PointerMotionMask, + GrabModeAsync, + GrabModeAsync, + None, + 0, + fl_event_time); + XGrabKeyboard(fl_display, + fl_xid(first_window()), + 1, + GrabModeAsync, + GrabModeAsync, + fl_event_time); +#endif + } + grab_ = w; + } else { + if (grab_) { +#ifdef WIN32 + fl_capture = 0; + ReleaseCapture(); +#else + XUngrabKeyboard(fl_display, fl_event_time); + XUngrabPointer(fl_display, fl_event_time); + // this flush is done in case the picked menu item goes into + // an infinite loop, so we don't leave the X server locked up: + XFlush(fl_display); +#endif + grab_ = 0; + fl_send_extra_move(); + } + } +} + +// +// End of "$Id: Fl_grab.cxx,v 1.1 1999/02/03 08:43:33 bill Exp $". +// diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx index 5bb70fbe5..aa1dee28f 100644 --- a/src/Fl_win32.cxx +++ b/src/Fl_win32.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_win32.cxx,v 1.26 1999/01/29 07:52:21 bill Exp $" +// "$Id: Fl_win32.cxx,v 1.27 1999/02/03 08:43:33 bill Exp $" // // WIN32-specific code for the Fast Light Tool Kit (FLTK). // @@ -176,7 +176,7 @@ void fl_fix_focus(); // in Fl.C //////////////////////////////////////////////////////////////// -extern HWND fl_capture; +HWND fl_capture; static int mouse_event(Fl_Window *window, int what, int button, WPARAM wParam, LPARAM lParam) @@ -862,5 +862,5 @@ void Fl_Window::make_current() { } // -// End of "$Id: Fl_win32.cxx,v 1.26 1999/01/29 07:52:21 bill Exp $". +// End of "$Id: Fl_win32.cxx,v 1.27 1999/02/03 08:43:33 bill Exp $". // diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index 412437c6f..36be30df6 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -1,5 +1,5 @@ // -// "$Id: Fl_x.cxx,v 1.22 1999/01/27 17:52:25 mike Exp $" +// "$Id: Fl_x.cxx,v 1.23 1999/02/03 08:43:34 bill Exp $" // // X specific code for the Fast Light Tool Kit (FLTK). // @@ -373,9 +373,12 @@ int fl_handle(const XEvent& xevent) case Expose: Fl_X::i(window)->wait_for_expose = 0; +#if 0 // try to keep windows on top even if WM_TRANSIENT_FOR does not work: + // opaque move/resize window managers do not like this, so I disabled it. if (Fl::first_window()->non_modal() && window != Fl::first_window()) Fl::first_window()->show(); +#endif case GraphicsExpose: window->damage(FL_DAMAGE_EXPOSE, xevent.xexpose.x, xevent.xexpose.y, @@ -818,5 +821,5 @@ void Fl_Window::make_current() { #endif // -// End of "$Id: Fl_x.cxx,v 1.22 1999/01/27 17:52:25 mike Exp $". +// End of "$Id: Fl_x.cxx,v 1.23 1999/02/03 08:43:34 bill Exp $". // diff --git a/src/Makefile b/src/Makefile index 54481d7cb..dfc3431d2 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,5 +1,5 @@ # -# "$Id: Makefile,v 1.10 1999/01/31 07:43:15 bill Exp $" +# "$Id: Makefile,v 1.11 1999/02/03 08:43:34 bill Exp $" # # Library makefile for the Fast Light Tool Kit (FLTK). # @@ -87,6 +87,7 @@ CPPFILES = \ Fl_display.cxx \ Fl_get_key.cxx \ Fl_get_system_colors.cxx \ + Fl_grab.cxx \ Fl_own_colormap.cxx \ Fl_visual.cxx \ Fl_x.cxx \ @@ -112,6 +113,7 @@ CPPFILES = \ fl_file_chooser.cxx \ fl_font.cxx \ fl_labeltype.cxx \ + fl_line_style.cxx \ fl_oval_box.cxx \ fl_overlay.cxx \ fl_overlay_visual.cxx \ @@ -182,5 +184,5 @@ install: ../lib/$(LIBNAME) -ln -s FL $(includedir)/Fl # -# End of "$Id: Makefile,v 1.10 1999/01/31 07:43:15 bill Exp $". +# End of "$Id: Makefile,v 1.11 1999/02/03 08:43:34 bill Exp $". # diff --git a/test/subwindow.cxx b/test/subwindow.cxx index 045747dfb..52a3292bc 100644 --- a/test/subwindow.cxx +++ b/test/subwindow.cxx @@ -1,5 +1,5 @@ // -// "$Id: subwindow.cxx,v 1.4 1999/01/07 19:18:01 mike Exp $" +// "$Id: subwindow.cxx,v 1.5 1999/02/03 08:43:35 bill Exp $" // // Nested window test program for the Fast Light Tool Kit (FLTK). // @@ -101,18 +101,56 @@ int testwindow::handle(int e) { return 0; } +const char* bigmess = +#if 1 +"this|is|only|a test" +#else +"item1|item2|item3|item4|item5|" +"submenu/item1|submenu/item2|submenu/item3|submenu/item4|" +"submenu/sub/item1|submenu/sub/item2|submenu/sub/item3|" +"item6|item7|item8|item9|item10|" +"item21|item22|item23|item24|item25|" +"submenu/item21|submenu/item22|submenu/item23|submenu/item24|" +"submenu/sub/item21|submenu/sub/item22|submenu/sub/item23|" +"item36|item37|item38|item39|item310|" +"item31|item32|item33|item34|item35|" +"submenu/item31|submenu/item32|submenu/item33|submenu/item34|" +"submenu/sub/item31|submenu/sub/item32|submenu/sub/item33|" +"item46|item47|item48|item49|item410|" +"item41|item42|item43|item44|item45|" +"submenu/item41|submenu/item42|submenu/item43|submenu/item44|" +"submenu/sub/item41|submenu/sub/item42|submenu/sub/item43|" +"item26|item27|item28|item29|item210|" +"submenu2/item1|submenu2/item2|submenu2/item3|submenu2/item4|" +"submenu2/sub/item1|submenu2/sub/item2|submenu2/sub/item3|" +"item6|item7|item8|item9|item10|" +"item21|item22|item23|item24|item25|" +"submenu2/item21|submenu2/item22|submenu2/item23|submenu2/item24|" +"submenu2/sub/item21|submenu2/sub/item22|submenu2/sub/item23|" +"item36|item37|item38|item39|item310|" +"item31|item32|item33|item34|item35|" +"submenu2/item31|submenu2/item32|submenu2/item33|submenu2/item34|" +"submenu2/sub/item31|submenu2/sub/item32|submenu2/sub/item33|" +"item46|item47|item48|item49|item410|" +"item41|item42|item43|item44|item45|" +"submenu2/item41|submenu2/item42|submenu2/item43|submenu2/item44|" +"submenu2/sub/item41|submenu2/sub/item42|submenu2/sub/item43|" +"item26|item27|item28|item29|item210|" +#endif +; + int main(int, char **) { testwindow *window = new testwindow(FL_UP_BOX,400,400,"outer"); new Fl_Toggle_Button(310,310,80,80,"&outer"); new EnterExit(10,310,80,80,"enterexit"); new Fl_Input(150,310,150,25,"input:"); - (new Fl_Menu_Button(5,150,80,25,"menu&1"))->add("this|is|only|a test"); + (new Fl_Menu_Button(5,150,80,25,"menu&1"))->add(bigmess); testwindow *subwindow = new testwindow(FL_DOWN_BOX,100,100,200,200,"inner"); new Fl_Toggle_Button(110,110,80,80,"&inner"); new EnterExit(10,110,80,80,"enterexit"); - (new Fl_Menu_Button(50,50,80,25,"menu&2"))->add("this|is|only|a test"); + (new Fl_Menu_Button(50,50,80,25,"menu&2"))->add(bigmess); new Fl_Input(45,80,150,25,"input:"); subwindow->resizable(subwindow); window->resizable(subwindow); @@ -132,5 +170,5 @@ int main(int, char **) { } // -// End of "$Id: subwindow.cxx,v 1.4 1999/01/07 19:18:01 mike Exp $". +// End of "$Id: subwindow.cxx,v 1.5 1999/02/03 08:43:35 bill Exp $". // |
