Update documentation and dependencies

This commit is contained in:
Albrecht Schlosser 2022-03-25 17:27:01 +01:00
parent 3fb66056d6
commit fc250a3aa2
4 changed files with 207 additions and 98 deletions

View File

@ -28,27 +28,27 @@
Fl_Preferences are similar to the Registry on Windows and Preferences on MacOS,
providing a simple method to store customisable user settings between app
launches, i.e. the previous window position or a history of previously
launches, for instance the previous window position or a history of previously
used documents.
Preferences are organized in a hierarchy of groups. Every group can contain
more groups and any number of key/value pairs. Keys can be text strings
containing ASCII letters, digits, periods, and underscores. Forward slashes
in a key name are treated as subgroups, i.e the key 'window/width' would
in a key name are treated as subgroups, i.e. the key 'window/width' would
actually refer to the key 'width' inside the group 'window'.
Keys usually have a unique name within their group. Duplicate keys are
possible though and can be accessed using the index based functions.
A value can be an UTF-8 string. Control characters and UTF-8 sequences are
stores as octal values. Long strings are wrap at the line ending and will be
reassembled when reading the file back.
stored as octal values. Long strings are wrapped at the line ending and will
be reassembled when reading the file back.
Several methods allow setting and getting numerical values and binary data.
Preferences are stored in text files that can be edited manually if needed.
The file format is easy to read and relatively forgiving. Preferences files
are the same on all platforms. User comments in preference files are preserved.
The file format is easy to read and relatively forgiving. Preference files are
the same on all platforms. User comments in preference files are preserved.
Filenames are unique for each application by using a vendor/application naming
scheme. The user must provide default values for all entries to ensure proper
operation should preferences be corrupted or not yet exist.
@ -59,14 +59,14 @@
Preferences should no be used to store document data. The .prefs file should
be kept small for performance reasons. One application can have multiple
preferences files. Extensive binary data however should be stored in separate
preference files. Extensive binary data however should be stored in separate
files: see \a Fl_Preferences::get_userdata_path() .
Fl_Preferences are not thread-safe. They can temprorarily change the locale
on some platforms during read an write access, which is also changes it
Fl_Preferences are not thread-safe. They can temporarily change the locale
on some platforms during read and write access, which also changes it
temporarily in other threads of the same app.
Typically a preferences database is read at startup, and then reopended and
Typically a preferences database is read at startup, and then reopened and
written at app shutdown:
```
int appWindowWidth, appWindowHeight;
@ -77,7 +77,8 @@
Fl_Preferences window(app, "window");
window.get("width", appWindowWidth, 800);
window.get("height", appWindowHeight, 600);
// 'app' destructor will be called, writing data to .prefs file
// 'app' destructor will be called. This will write data to the
// .prefs file if any preferences were changed or added
}
void quit() {
@ -88,12 +89,12 @@
}
```
\see Fl_Preferences::Fl_Preferences( Root root, const char *vendor, const char *application )
\see Fl_Preferences::Fl_Preferences(Root root, const char *vendor, const char *application)
As a special case, Fl_Preferences can be memory mapped and not be associated
with a file on disk.
\see Fl_Preferences::Fl_Preferences( Fl_Preferences *parent, const char *group )
\see Fl_Preferences::Fl_Preferences(Fl_Preferences *parent, const char *group)
for more details on memory mapped preferences.
\note Starting with FLTK 1.3, preference databases are expected to
@ -102,17 +103,17 @@
for text entries using international characters.
\note Starting with FLTK 1.4, searching a valid path to store
the preferences files has changed slightly. Please see
the preference files has changed slightly. Please see
Fl_Preferences::Fl_Preferences(Root, const char*, const char*)
for details.
\note Starting with FLTK 1.4, preference files should be created with
`SYSTEM_L` or `USER_L` to be interchangeable between computers with
differing loacale settings. The legacy modes, `LOCAL` and `SYSTEM`, will
differing locale settings. The legacy modes, `LOCAL` and `SYSTEM`, will
read and write floating point values using the decimal point of the
current locale. As a result, a fp-value would be writte '3,1415' on a
current locale. As a result, a fp-value would be written '3,1415' on a
German machine, and would be read back as '3.0' on a US machine because
the comma would not be recoginized as an alternative decimal point.
the comma would not be recognized as an alternative decimal point.
*/
class FL_EXPORT Fl_Preferences {
@ -122,23 +123,23 @@ public:
*/
enum Root {
UNKNOWN_ROOT_TYPE = -1, ///< Returned if storage could not be determined.
SYSTEM = 0, ///< Preferences are used system-wide, deprecated, see SYSTEM_L
USER, ///< Preferences apply only to the current user, deprecated, see USER_L
SYSTEM = 0, ///< Preferences are used system-wide. Deprecated, see SYSTEM_L
USER, ///< Preferences apply only to the current user. Deprecated, see USER_L
MEMORY, ///< Returned if querying memory mapped preferences
ROOT_MASK = 0x00FF, ///< mask for the values above
ROOT_MASK = 0x00FF, ///< Mask for the values above
CORE = 0x0100, ///< OR'd by FLTK to read and write core library preferences and options
C_LOCALE = 0x1000, ///< this flag should always be set, it makes sure that floating point
C_LOCALE = 0x1000, ///< This flag should always be set, it makes sure that floating point
///< values are written correctly independently of the current locale
SYSTEM_L = SYSTEM | C_LOCALE, ///< Preferences are used system-wide, locale independent
USER_L = USER | C_LOCALE, ///< Preferences apply only to the current user, locale independent
CORE_SYSTEM_L = CORE | SYSTEM_L, ///< same as CORE | SYSTEM | C_LOCALE
CORE_USER_L = CORE | USER_L, ///< same as CORE | USER | C_LOCALE
CORE_SYSTEM = CORE | SYSTEM, ///< deprecated, same as CORE | SYSTEM
CORE_USER = CORE | USER, ///< deprecated, same as CORE | USER
CORE_SYSTEM_L = CORE | SYSTEM_L, ///< Same as CORE | SYSTEM | C_LOCALE
CORE_USER_L = CORE | USER_L, ///< Same as CORE | USER | C_LOCALE
CORE_SYSTEM = CORE | SYSTEM, ///< Deprecated, same as CORE | SYSTEM. Use CORE_SYSTEM_L instead.
CORE_USER = CORE | USER, ///< Deprecated, same as CORE | USER. Use CORE_USER_L instead.
};
/**
Every Fl_Preferences-Group has a uniqe ID.
Every Fl_Preferences-Group has a unique ID.
ID's can be retrieved from an Fl_Preferences-Group and can then be used
to create more Fl_Preference references to the same data set, as long as the
@ -148,36 +149,36 @@ public:
static const char *new_UUID();
/** Set this, if no call to Fl_Preferences shall access the file sytem
/** Set this if no call to Fl_Preferences shall access the file system.
@see Fl_Preferences::file_access(unsigned int)
@see Fl_Preferences::file_access()
*/
static const unsigned int NONE = 0x0000;
/** set this if it is ok for applications to read user preference files */
/** Set this if it is OK for applications to read user preference files. */
static const unsigned int USER_READ_OK = 0x0001;
/** set this if it is ok for applications to create and write user preference files */
/** Set this if it is OK for applications to create and write user preference files. */
static const unsigned int USER_WRITE_OK = 0x0002;
/** set this if it is ok for applications to read, create, and write user preference files */
/** Set this if it is OK for applications to read, create, and write user preference files. */
static const unsigned int USER_OK = USER_READ_OK | USER_WRITE_OK;
/** set this if it is ok for applications to read system wide preference files */
/** Set this if it is OK for applications to read system wide preference files. */
static const unsigned int SYSTEM_READ_OK = 0x0004;
/** set this if it is ok for applications to create and write system wide preference files */
/** Set this if it is OK for applications to create and write system wide preference files. */
static const unsigned int SYSTEM_WRITE_OK = 0x0008;
/** set this if it is ok for applications to read, create, and write system wide preference files */
/** Set this if it is OK for applications to read, create, and write system wide preference files. */
static const unsigned int SYSTEM_OK = SYSTEM_READ_OK | SYSTEM_WRITE_OK;
/** set this if it is ok for applications to read, create, and write any kind of preference files */
/** Set this if it is OK for applications to read, create, and write any kind of preference files. */
static const unsigned int APP_OK = SYSTEM_OK | USER_OK;
/** Set this if it is ok for FLTK to read preference files. USER_READ_OK and/or SYSTEM_READ_OK must also be set. */
/** Set this if it is OK for FLTK to read preference files. USER_READ_OK and/or SYSTEM_READ_OK must also be set. */
static const unsigned int CORE_READ_OK = 0x0010;
/** Set this if it is ok for FLTK to create or write preference files. USER_WRITE_OK and/or SYSTEM_WRITE_OK must also be set. */
/** Set this if it is OK for FLTK to create or write preference files. USER_WRITE_OK and/or SYSTEM_WRITE_OK must also be set. */
static const unsigned int CORE_WRITE_OK = 0x0020;
/** set this if it is ok for FLTK to read, create, or write preference files */
/** Set this if it is OK for FLTK to read, create, or write preference files. */
static const unsigned int CORE_OK = CORE_READ_OK | CORE_WRITE_OK;
/** set this to allow FLTK and applications to read preference files */
/** Set this to allow FLTK and applications to read preference files. */
static const unsigned int ALL_READ_OK = USER_READ_OK | SYSTEM_READ_OK | CORE_READ_OK;
/** set this to allow FLTK and applications to create and write preference files */
/** Set this to allow FLTK and applications to create and write preference files. */
static const unsigned int ALL_WRITE_OK = USER_WRITE_OK | SYSTEM_WRITE_OK | CORE_WRITE_OK;
/** set this to give FLTK and applications permission to read, write, and create preference files */
/** Set this to give FLTK and applications permission to read, write, and create preference files. */
static const unsigned int ALL = ALL_READ_OK | ALL_WRITE_OK;
static void file_access(unsigned int flags);
@ -312,7 +313,7 @@ public: // older Sun compilers need this (public definition of the following cl
Node *first_child_, *next_;
union { // these two are mutually exclusive
Node *parent_; // top_ bit clear
RootNode *root_node_; // top_ bit set
RootNode *root_node_; // top_ bit set
};
char *path_;
Entry *entry_;
@ -362,7 +363,7 @@ public: // older Sun compilers need this (public definition of the following cl
};
friend class Node;
class FL_EXPORT RootNode { // the root node manages file paths and basic reading and writing
class FL_EXPORT RootNode { // the root node manages file paths and basic reading and writing
Fl_Preferences *prefs_;
char *filename_;
char *vendor_, *application_;

View File

@ -123,7 +123,7 @@ unsigned int Fl_Preferences::file_access()
these parameters.
Find the possible location of a preference file on disk without touching any
of the pathname componennts. This can be used to check if a preferneces file
of the pathname components. This can be used to check if a preference file
already exists.
\param[out] buffer write the resulting path into this buffer
@ -177,7 +177,7 @@ Fl_Preferences::Root Fl_Preferences::filename( char *buffer, size_t buffer_size,
The application argument can be the working title or final name of your
application.
Both vendor and application must be valid UNIX path segments as they become
parts of the preferences file path and may contain forward slashes to create
parts of the preference file path and may contain forward slashes to create
deeper file structures.
\note On \b Windows, the directory is constructed by querying the
@ -199,7 +199,7 @@ Fl_Preferences::Root Fl_Preferences::filename( char *buffer, size_t buffer_size,
If all attempts fail, data will be stored in RAM only and be lost when the
app exits.
The \c SYSTEM preferences filename is hardcoded as
The \c SYSTEM preference filename is hardcoded as
<tt>/etc/fltk/\$(vendor)/\$(application).prefs</tt> .
For backward compatibility, the old \c USER `.prefs` file naming scheme
@ -209,9 +209,9 @@ Fl_Preferences::Root Fl_Preferences::filename( char *buffer, size_t buffer_size,
defaults to `$HOME/.config/`.
The user preferences will be stored in
<tt>\$(directory)/\$(vendor)/\$(application).prefs</tt>, The user data path
<tt>\$(directory)/\$(vendor)/\$(application).prefs</tt>. The user data path
will be
<tt>\$(directory)/\$(vendor)/\$(application)/</tt>
<tt>\$(directory)/\$(vendor)/\$(application)/</tt>.
In FLTK versions before 1.4.0, if \c $HOME was not set, the \c USER path
would be empty, generating <tt>\$(vendor)/\$(application).prefs</tt>, which
@ -230,7 +230,7 @@ Fl_Preferences::Root Fl_Preferences::filename( char *buffer, size_t buffer_size,
\par In FLTK versions before 1.4.0, if \c $HOME was not set, the \c USER path
would be \c NULL , generating
<tt>\<null\>/Library/Preferences/\$(vendor)/\$(application).prefs</tt>,
which would silently fail to create a preferences file.
which would silently fail to create a preference file.
\param[in] root can be \c USER_L or \c SYSTEM_L for user specific or system wide preferences
\param[in] vendor unique text describing the company or author of this file, must be a valid filepath segment
@ -245,13 +245,13 @@ Fl_Preferences::Fl_Preferences( Root root, const char *vendor, const char *appli
}
/**
\brief Use this constructor to create or read a preferences file at an
\brief Use this constructor to create or read a preference file at an
arbitrary position in the file system.
The file name is generated in the form <tt>\$(path)/\$(application).prefs</tt>.
If \p application is \c NULL, \p path is taken literally as the file path and name.
\param[in] path path to the directory that contains the preferences file
\param[in] path path to the directory that contains the preference file
\param[in] vendor unique text describing the company or author of this file, must be a valid filepath segment
\param[in] application unique text describing the application, must be a valid filepath segment
*/
@ -284,10 +284,10 @@ Fl_Preferences::Fl_Preferences( Fl_Preferences &parent, const char *group ) {
If `parent` is set to `NULL`, an unnamed database will be accessed that exists
only in local memory and is not associated with a file on disk. The root type
of this databse is set to `Fl_Preferences::MEMORY`.
of this database is set to `Fl_Preferences::MEMORY`.
- the memory database is \em not shared among multiple instances of the same app
- memory databses are \em not thread safe
- memory databases are \em not thread safe
- all data will be lost when the app quits
```
@ -305,11 +305,11 @@ Fl_Preferences::Fl_Preferences( Fl_Preferences &parent, const char *group ) {
FLTK uses the memory database to manage plugins. See `Fl_Plugin`.
\param[in] parent the parameter parent is a pointer to the parent group.
If \p Parent is \p NULL, the new Preferences item refers to an
If \p parent is \p NULL, the new preferences item refers to an
application internal database ("runtime prefs") which exists only
once, and remains in RAM only until the application quits.
This database is used to manage plugins and other data indexes
by strings. Runtime Prefs are \em not thread-safe.
by strings. Runtime prefs are \em not thread-safe.
\param[in] group a group name that is used as a key into the database
\see Fl_Preferences( Fl_Preferences&, const char *group )
*/
@ -386,7 +386,7 @@ Fl_Preferences::Fl_Preferences(const Fl_Preferences &rhs)
{ }
/**
Assign another reference to a Preference group.
Assign another reference to a preference group.
*/
Fl_Preferences &Fl_Preferences::operator=(const Fl_Preferences &rhs) {
if (&rhs != this) {
@ -398,29 +398,28 @@ Fl_Preferences &Fl_Preferences::operator=(const Fl_Preferences &rhs) {
/**
The destructor removes allocated resources. When used on the
\em base preferences group, the destructor flushes all
changes to the preferences file and deletes all internal
databases.
\em base preferences group, the destructor flushes all changes
to the preference file and deletes all internal databases.
The destructor does not remove any data from the database. It merely
deletes your reference to the database.
*/
Fl_Preferences::~Fl_Preferences() {
if (node && !node->parent()) delete rootNode;
// DO NOT delete nodes! The root node will do that after writing the preferences
// zero all pointer to avoid memory errors, even though
// DO NOT delete nodes! The root node will do that after writing the preferences.
// Zero all pointer to avoid memory errors, even though
// Valgrind does not complain (Cygwin does though)
node = 0L;
rootNode = 0L;
}
/**
Return the file name and path to the Preferences file.
Return the file name and path to the preference file.
If the preferences have not changed or have not been flushed, the file
or directory may not have been created yet.
\param[out] buffer write the reulting path into this buffer
\param[out] buffer write the resulting path into this buffer
\param[in] buffer_size size of the `buffer` in bytes
\return the root type at creation type, or MEMORY for runtime prefs, it does
not return CORE or LOCALE flags.
@ -466,9 +465,9 @@ const char *Fl_Preferences::group( int num_group ) {
/**
Returns non-zero if a group with this name exists.
Group names are relative to the Preferences node and can contain a path.
Group names are relative to the Fl_Preferences node and can contain a path.
"." describes the current node, "./" describes the topmost node.
By preceding a groupname with a "./", its path becomes relative to the topmost node.
By preceding a groupname with a "./" its path becomes relative to the topmost node.
\param[in] key name of group that is searched for
\return 0 if no group by that name was found
@ -510,9 +509,8 @@ int Fl_Preferences::entries() {
}
/**
Returns the name of an entry. There is no guaranteed order of
entry names. The index must be within the range given by
entries().
Returns the name of an entry. There is no guaranteed order of entry
names. The index must be within the range given by entries().
\param[in] index number indexing the requested entry
\return pointer to value cstring
@ -578,9 +576,8 @@ char Fl_Preferences::get( const char *key, int &value, int defaultValue ) {
/**
Sets an entry (name/value pair). The return value indicates if there
was a problem storing the data in memory. However it does not
reflect if the value was actually stored in the preferences
file.
was a problem storing the data in memory. However it does not reflect
if the value was actually stored in the preference file.
\param[in] key name of entry
\param[in] value set this entry to \p value
@ -618,9 +615,8 @@ char Fl_Preferences::get( const char *key, float &value, float defaultValue ) {
/**
Sets an entry (name/value pair). The return value indicates if there
was a problem storing the data in memory. However it does not
reflect if the value was actually stored in the preferences
file.
was a problem storing the data in memory. However it does not reflect
if the value was actually stored in the preference file.
\param[in] key name of entry
\param[in] value set this entry to \p value
@ -638,9 +634,8 @@ char Fl_Preferences::set( const char *key, float value ) {
/**
Sets an entry (name/value pair). The return value indicates if there
was a problem storing the data in memory. However it does not
reflect if the value was actually stored in the preferences
file.
was a problem storing the data in memory. However it does not reflect
if the value was actually stored in the preference file.
\param[in] key name of entry
\param[in] value set this entry to \p value
@ -683,9 +678,8 @@ char Fl_Preferences::get( const char *key, double &value, double defaultValue )
/**
Sets an entry (name/value pair). The return value indicates if there
was a problem storing the data in memory. However it does not
reflect if the value was actually stored in the preferences
file.
was a problem storing the data in memory. However it does not reflect
if the value was actually stored in the preference file.
\param[in] key name of entry
\param[in] value set this entry to \p value
@ -703,9 +697,8 @@ char Fl_Preferences::set( const char *key, double value ) {
/**
Sets an entry (name/value pair). The return value indicates if there
was a problem storing the data in memory. However it does not
reflect if the value was actually stored in the preferences
file.
was a problem storing the data in memory. However it does not reflect
if the value was actually stored in the preference file.
\param[in] key name of entry
\param[in] value set this entry to \p value
@ -808,8 +801,7 @@ char Fl_Preferences::get( const char *key, char *&text, const char *defaultValue
/**
Sets an entry (name/value pair). The return value indicates if there
was a problem storing the data in memory. However it does not
reflect if the value was actually stored in the preferences
file.
reflect if the value was actually stored in the preference file.
\param[in] key name of entry
\param[in] text set this entry to \p value
@ -857,7 +849,7 @@ static void *decodeHex( const char *src, int &size ) {
}
/**
Reads a binary entry from the group, ancoded in hexadecimal blocks.
Reads a binary entry from the group, encoded in hexadecimal blocks.
\param[in] key name of entry
\param[out] data value returned from preferences or default value if none was set
@ -884,7 +876,7 @@ char Fl_Preferences::get( const char *key, void *data, const void *defaultValue,
}
/**
Reads a binary entry from the group, ancoded in hexadecimal blocks.
Reads a binary entry from the group, encoded in hexadecimal blocks.
A binary (not hex) default value can be supplied.
The return value indicates if the value was available (non-zero) or the
default was used (0).
@ -954,8 +946,7 @@ char Fl_Preferences::get( const char *key, void *&data, const void *defaultValue
/**
Sets an entry (name/value pair). The return value indicates if there
was a problem storing the data in memory. However it does not
reflect if the value was actually stored in the preferences
file.
reflect if the value was actually stored in the preference file.
\param[in] key name of entry
\param[in] data set this entry to \p value
@ -989,7 +980,7 @@ int Fl_Preferences::size( const char *key ) {
}
/**
\brief Creates a path that is related to the preferences file and
\brief Creates a path that is related to the preference file and
that is usable for additional application data.
This function creates a directory that is named after the preferences
@ -1000,8 +991,8 @@ int Fl_Preferences::size( const char *key ) {
If the name is too long, it will be clipped.
This function can be used with direct paths that don't end in \c .prefs .
\a getUserDataPath() will remove any extension and end the path with a \c / . If
the file name has no extension, \a getUserDataPath() will append \c .data/
\a getUserDataPath() will remove any extension and end the path with a \c / .
If the file name has no extension, \a getUserDataPath() will append \c .data/
to the path name.
Example:
@ -1037,7 +1028,7 @@ char Fl_Preferences::get_userdata_path( char *path, int pathlen ) {
/**
Writes preferences to disk if they were modified.
This method can be used to verify that writing a preferences file went well.
This method can be used to verify that writing a preference file went well.
Deleting the base preferences object will also write the contents of the
database to disk.
@ -1045,12 +1036,12 @@ char Fl_Preferences::get_userdata_path( char *path, int pathlen ) {
blocked writing, etc.
\return 0 if the file was written to disk. This does not check if the disk ran
out of space and the file is truncated.
\return 1 if there no data written to the database and no write attempt
\return 1 if no data was written to the database and no write attempt
to disk was made.
*/
int Fl_Preferences::flush() {
int ret = dirty();
if (ret!=1)
if (ret != 1)
return ret;
return rootNode->write();
}
@ -1059,7 +1050,7 @@ int Fl_Preferences::flush() {
Check if there were changes to the database that need to be written to disk.
\return 1 if the database will be written to disk by `flush` or destructor.
\return 0 if the databse is unchanged since the last write operation.
\return 0 if the database is unchanged since the last write operation.
\return -1 f there is an internal database error.
*/
int Fl_Preferences::dirty() {
@ -1200,7 +1191,7 @@ Fl_Preferences::RootNode::~RootNode() {
prefs_->node = 0L;
}
// read a preferences file and construct the group tree and with all entry leafs
// read a preference file and construct the group tree and all entry leaves
int Fl_Preferences::RootNode::read() {
if (!filename_) // RUNTIME preferences, or filename could not be created
return -1;
@ -1249,7 +1240,7 @@ int Fl_Preferences::RootNode::read() {
return 0;
}
// write the group tree and all entry leafs
// write the group tree and all entry leaves
int Fl_Preferences::RootNode::write() {
if (!filename_) // RUNTIME preferences, or filename could not be created
return -1;

View File

@ -510,7 +510,7 @@ void Fl_System_Driver::gettime(time_t *sec, int *usec) {
their own stuff and call this base class method to run
the platform independent wait functions.
Overriden methods will typically call this method early and perform
Overridden methods will typically call this method early and perform
platform-specific operations after that in order to work with the
\p time_to_wait value possibly modified by this method.
However, some platform drivers may need to do extra stuff before

View File

@ -230,6 +230,7 @@ drivers/Posix/Fl_Posix_Printer_Driver.o: ../src/flstring.h
drivers/Posix/Fl_Posix_Printer_Driver.o: ../src/print_panel.cxx
drivers/Posix/Fl_Posix_Printer_Driver.o: drivers/Posix/Fl_Posix_System_Driver.H
drivers/Posix/Fl_Posix_Printer_Driver.o: drivers/PostScript/Fl_PostScript_Graphics_Driver.H
drivers/Posix/Fl_Posix_Printer_Driver.o: drivers/Unix/Fl_Unix_System_Driver.H
drivers/Posix/Fl_Posix_Printer_Driver.o: drivers/X11/Fl_X11_System_Driver.H
drivers/Posix/Fl_Posix_Printer_Driver.o: Fl_System_Driver.H
drivers/Posix/Fl_Posix_Printer_Driver.o: print_panel.h
@ -350,6 +351,41 @@ drivers/SVG/Fl_SVG_File_Surface.o: ../FL/Fl_Widget_Surface.H
drivers/SVG/Fl_SVG_File_Surface.o: ../FL/Fl_Window.H
drivers/SVG/Fl_SVG_File_Surface.o: ../FL/math.h
drivers/SVG/Fl_SVG_File_Surface.o: ../FL/platform_types.h
drivers/Unix/Fl_Unix_System_Driver.o: ../config.h
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Enumerations.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/filename.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Fl.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Fl_Browser.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Fl_Cairo.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/fl_casts.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/fl_config.h
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Fl_Export.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Fl_File_Browser.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Fl_File_Icon.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/Fl_Preferences.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/fl_string_functions.h
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/fl_types.h
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/fl_utf8.h
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/platform.H
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/platform_types.h
drivers/Unix/Fl_Unix_System_Driver.o: ../FL/x11.H
drivers/Unix/Fl_Unix_System_Driver.o: drivers/Posix/Fl_Posix_System_Driver.H
drivers/Unix/Fl_Unix_System_Driver.o: drivers/Unix/Fl_Unix_System_Driver.H
drivers/Unix/Fl_Unix_System_Driver.o: flstring.h
drivers/Unix/Fl_Unix_System_Driver.o: Fl_System_Driver.H
drivers/Unix/Fl_Unix_System_Driver.o: Fl_Timeout.h
drivers/X11/fl_X11_gl_platform_init.o: ../config.h
drivers/X11/fl_X11_gl_platform_init.o: ../FL/Enumerations.H
drivers/X11/fl_X11_gl_platform_init.o: ../FL/fl_config.h
drivers/X11/fl_X11_gl_platform_init.o: ../FL/Fl_Export.H
drivers/X11/fl_X11_gl_platform_init.o: ../FL/Fl_Gl_Window.H
drivers/X11/fl_X11_gl_platform_init.o: ../FL/fl_types.h
drivers/X11/fl_X11_gl_platform_init.o: ../FL/Fl_Window.H
drivers/X11/fl_X11_gl_platform_init.o: ../FL/platform.H
drivers/X11/fl_X11_gl_platform_init.o: ../FL/platform_types.h
drivers/X11/fl_X11_gl_platform_init.o: ../FL/x11.H
drivers/X11/fl_X11_gl_platform_init.o: drivers/X11/Fl_X11_Gl_Window_Driver.H
drivers/X11/fl_X11_gl_platform_init.o: Fl_Gl_Window_Driver.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: ../config.h
drivers/X11/Fl_X11_Gl_Window_Driver.o: ../FL/Enumerations.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: ../FL/Fl.H
@ -384,12 +420,63 @@ drivers/X11/Fl_X11_Gl_Window_Driver.o: ../FL/Fl_Window.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: ../FL/platform.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: ../FL/platform_types.h
drivers/X11/Fl_X11_Gl_Window_Driver.o: ../FL/x11.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: drivers/X11/Fl_X11_Gl_Window_Driver.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: drivers/Xlib/Fl_Font.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: drivers/Xlib/Fl_Xlib_Graphics_Driver.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: Fl_Gl_Choice.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: Fl_Gl_Window_Driver.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: Fl_Screen_Driver.H
drivers/X11/Fl_X11_Gl_Window_Driver.o: Fl_Window_Driver.H
drivers/X11/fl_X11_platform_init.o: ../config.h
drivers/X11/fl_X11_platform_init.o: ../FL/Enumerations.H
drivers/X11/fl_X11_platform_init.o: ../FL/filename.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Bitmap.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Cairo.H
drivers/X11/fl_X11_platform_init.o: ../FL/fl_casts.H
drivers/X11/fl_X11_platform_init.o: ../FL/fl_config.h
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Copy_Surface.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Device.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Double_Window.H
drivers/X11/fl_X11_platform_init.o: ../FL/fl_draw.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Export.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Graphics_Driver.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Group.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Image.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Image_Surface.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Overlay_Window.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Pixmap.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Plugin.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Preferences.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Rect.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_RGB_Image.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Scrollbar.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Shared_Image.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Slider.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Text_Buffer.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Text_Display.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Text_Editor.H
drivers/X11/fl_X11_platform_init.o: ../FL/fl_types.h
drivers/X11/fl_X11_platform_init.o: ../FL/fl_utf8.h
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Valuator.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Widget.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Widget_Surface.H
drivers/X11/fl_X11_platform_init.o: ../FL/Fl_Window.H
drivers/X11/fl_X11_platform_init.o: ../FL/platform.H
drivers/X11/fl_X11_platform_init.o: ../FL/platform_types.h
drivers/X11/fl_X11_platform_init.o: ../FL/x11.H
drivers/X11/fl_X11_platform_init.o: drivers/Posix/Fl_Posix_System_Driver.H
drivers/X11/fl_X11_platform_init.o: drivers/Unix/Fl_Unix_System_Driver.H
drivers/X11/fl_X11_platform_init.o: drivers/X11/Fl_X11_Screen_Driver.H
drivers/X11/fl_X11_platform_init.o: drivers/X11/Fl_X11_System_Driver.H
drivers/X11/fl_X11_platform_init.o: drivers/X11/Fl_X11_Window_Driver.H
drivers/X11/fl_X11_platform_init.o: drivers/Xlib/Fl_Font.H
drivers/X11/fl_X11_platform_init.o: drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.H
drivers/X11/fl_X11_platform_init.o: drivers/Xlib/Fl_Xlib_Graphics_Driver.H
drivers/X11/fl_X11_platform_init.o: drivers/Xlib/Fl_Xlib_Image_Surface_Driver.H
drivers/X11/fl_X11_platform_init.o: Fl_Screen_Driver.H
drivers/X11/fl_X11_platform_init.o: Fl_System_Driver.H
drivers/X11/fl_X11_platform_init.o: Fl_Window_Driver.H
drivers/X11/Fl_X11_Screen_Driver.o: ../config.h
drivers/X11/Fl_X11_Screen_Driver.o: ../FL/Enumerations.H
drivers/X11/Fl_X11_Screen_Driver.o: ../FL/filename.H
@ -433,6 +520,7 @@ drivers/X11/Fl_X11_Screen_Driver.o: ../FL/platform.H
drivers/X11/Fl_X11_Screen_Driver.o: ../FL/platform_types.h
drivers/X11/Fl_X11_Screen_Driver.o: ../FL/x11.H
drivers/X11/Fl_X11_Screen_Driver.o: drivers/Posix/Fl_Posix_System_Driver.H
drivers/X11/Fl_X11_Screen_Driver.o: drivers/Unix/Fl_Unix_System_Driver.H
drivers/X11/Fl_X11_Screen_Driver.o: drivers/X11/Fl_X11_Screen_Driver.H
drivers/X11/Fl_X11_Screen_Driver.o: drivers/X11/Fl_X11_System_Driver.H
drivers/X11/Fl_X11_Screen_Driver.o: drivers/X11/Fl_X11_Window_Driver.H
@ -461,6 +549,7 @@ drivers/X11/Fl_X11_System_Driver.o: ../FL/platform.H
drivers/X11/Fl_X11_System_Driver.o: ../FL/platform_types.h
drivers/X11/Fl_X11_System_Driver.o: ../FL/x11.H
drivers/X11/Fl_X11_System_Driver.o: drivers/Posix/Fl_Posix_System_Driver.H
drivers/X11/Fl_X11_System_Driver.o: drivers/Unix/Fl_Unix_System_Driver.H
drivers/X11/Fl_X11_System_Driver.o: drivers/X11/Fl_X11_System_Driver.H
drivers/X11/Fl_X11_System_Driver.o: flstring.h
drivers/X11/Fl_X11_System_Driver.o: Fl_System_Driver.H
@ -543,6 +632,7 @@ drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.o: ../FL/platform.H
drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.o: ../FL/platform_types.h
drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.o: ../FL/x11.H
drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.o: drivers/X11/Fl_X11_Screen_Driver.H
drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.o: drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.H
drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.o: drivers/Xlib/Fl_Xlib_Graphics_Driver.H
drivers/Xlib/Fl_Xlib_Copy_Surface_Driver.o: Fl_Screen_Driver.H
drivers/Xlib/Fl_Xlib_Graphics_Driver.o: ../config.h
@ -782,6 +872,7 @@ drivers/Xlib/Fl_Xlib_Image_Surface_Driver.o: ../FL/platform.H
drivers/Xlib/Fl_Xlib_Image_Surface_Driver.o: ../FL/platform_types.h
drivers/Xlib/Fl_Xlib_Image_Surface_Driver.o: ../FL/x11.H
drivers/Xlib/Fl_Xlib_Image_Surface_Driver.o: drivers/Xlib/Fl_Xlib_Graphics_Driver.H
drivers/Xlib/Fl_Xlib_Image_Surface_Driver.o: drivers/Xlib/Fl_Xlib_Image_Surface_Driver.H
drivers/Xlib/Fl_Xlib_Image_Surface_Driver.o: Fl_Screen_Driver.H
filename_absolute.o: ../config.h
filename_absolute.o: ../FL/Enumerations.H
@ -1757,6 +1848,7 @@ Fl_get_key.o: ../FL/platform.H
Fl_get_key.o: ../FL/platform_types.h
Fl_get_key.o: ../FL/x11.H
Fl_get_key.o: drivers/Posix/Fl_Posix_System_Driver.H
Fl_get_key.o: drivers/Unix/Fl_Unix_System_Driver.H
Fl_get_key.o: drivers/X11/Fl_X11_System_Driver.H
Fl_get_key.o: Fl_System_Driver.H
Fl_get_system_colors.o: ../config.h
@ -2276,15 +2368,19 @@ Fl_Menu.o: ../config.h
Fl_Menu.o: ../FL/Enumerations.H
Fl_Menu.o: ../FL/filename.H
Fl_Menu.o: ../FL/Fl.H
Fl_Menu.o: ../FL/Fl_Bitmap.H
Fl_Menu.o: ../FL/Fl_Cairo.H
Fl_Menu.o: ../FL/fl_casts.H
Fl_Menu.o: ../FL/fl_config.h
Fl_Menu.o: ../FL/Fl_Double_Window.H
Fl_Menu.o: ../FL/fl_draw.H
Fl_Menu.o: ../FL/Fl_Export.H
Fl_Menu.o: ../FL/Fl_Group.H
Fl_Menu.o: ../FL/Fl_Image.H
Fl_Menu.o: ../FL/Fl_Menu_.H
Fl_Menu.o: ../FL/Fl_Menu_Item.H
Fl_Menu.o: ../FL/Fl_Menu_Window.H
Fl_Menu.o: ../FL/Fl_Overlay_Window.H
Fl_Menu.o: ../FL/Fl_Preferences.H
Fl_Menu.o: ../FL/Fl_Single_Window.H
Fl_Menu.o: ../FL/fl_types.h
@ -2294,6 +2390,7 @@ Fl_Menu.o: ../FL/Fl_Window.H
Fl_Menu.o: ../FL/platform_types.h
Fl_Menu.o: flstring.h
Fl_Menu.o: Fl_System_Driver.H
Fl_Menu.o: Fl_Window_Driver.H
Fl_Menu_.o: ../config.h
Fl_Menu_.o: ../FL/Enumerations.H
Fl_Menu_.o: ../FL/Fl.H
@ -2560,6 +2657,7 @@ Fl_Native_File_Chooser_GTK.o: ../FL/platform.H
Fl_Native_File_Chooser_GTK.o: ../FL/platform_types.h
Fl_Native_File_Chooser_GTK.o: ../FL/x11.H
Fl_Native_File_Chooser_GTK.o: drivers/Posix/Fl_Posix_System_Driver.H
Fl_Native_File_Chooser_GTK.o: drivers/Unix/Fl_Unix_System_Driver.H
Fl_Native_File_Chooser_GTK.o: drivers/X11/Fl_X11_System_Driver.H
Fl_Native_File_Chooser_GTK.o: Fl_Native_File_Chooser_Kdialog.H
Fl_Native_File_Chooser_GTK.o: Fl_Screen_Driver.H
@ -2605,7 +2703,10 @@ Fl_Native_File_Chooser_Kdialog.o: ../FL/fl_utf8.h
Fl_Native_File_Chooser_Kdialog.o: ../FL/Fl_Widget.H
Fl_Native_File_Chooser_Kdialog.o: ../FL/Fl_Window.H
Fl_Native_File_Chooser_Kdialog.o: ../FL/platform_types.h
Fl_Native_File_Chooser_Kdialog.o: drivers/Posix/Fl_Posix_System_Driver.H
Fl_Native_File_Chooser_Kdialog.o: drivers/Unix/Fl_Unix_System_Driver.H
Fl_Native_File_Chooser_Kdialog.o: Fl_Native_File_Chooser_Kdialog.H
Fl_Native_File_Chooser_Kdialog.o: Fl_System_Driver.H
Fl_Native_File_Chooser_Kdialog.o: Fl_Window_Driver.H
fl_open_uri.o: ../config.h
fl_open_uri.o: ../FL/Enumerations.H
@ -3273,6 +3374,7 @@ Fl_System_Driver.o: ../FL/fl_utf8.h
Fl_System_Driver.o: ../FL/platform_types.h
Fl_System_Driver.o: flstring.h
Fl_System_Driver.o: Fl_System_Driver.H
Fl_System_Driver.o: Fl_Timeout.h
Fl_Sys_Menu_Bar.o: ../config.h
Fl_Sys_Menu_Bar.o: ../FL/Enumerations.H
Fl_Sys_Menu_Bar.o: ../FL/filename.H
@ -3777,19 +3879,33 @@ Fl_Window_Driver.o: ../FL/Fl_Bitmap.H
Fl_Window_Driver.o: ../FL/Fl_Cairo.H
Fl_Window_Driver.o: ../FL/fl_casts.H
Fl_Window_Driver.o: ../FL/fl_config.h
Fl_Window_Driver.o: ../FL/Fl_Device.H
Fl_Window_Driver.o: ../FL/Fl_Double_Window.H
Fl_Window_Driver.o: ../FL/fl_draw.H
Fl_Window_Driver.o: ../FL/Fl_Export.H
Fl_Window_Driver.o: ../FL/Fl_Graphics_Driver.H
Fl_Window_Driver.o: ../FL/Fl_Group.H
Fl_Window_Driver.o: ../FL/Fl_Image.H
Fl_Window_Driver.o: ../FL/Fl_Overlay_Window.H
Fl_Window_Driver.o: ../FL/Fl_Pixmap.H
Fl_Window_Driver.o: ../FL/Fl_Plugin.H
Fl_Window_Driver.o: ../FL/Fl_Preferences.H
Fl_Window_Driver.o: ../FL/Fl_Rect.H
Fl_Window_Driver.o: ../FL/Fl_RGB_Image.H
Fl_Window_Driver.o: ../FL/Fl_Scrollbar.H
Fl_Window_Driver.o: ../FL/Fl_Slider.H
Fl_Window_Driver.o: ../FL/Fl_Text_Buffer.H
Fl_Window_Driver.o: ../FL/Fl_Text_Display.H
Fl_Window_Driver.o: ../FL/Fl_Text_Editor.H
Fl_Window_Driver.o: ../FL/fl_types.h
Fl_Window_Driver.o: ../FL/fl_utf8.h
Fl_Window_Driver.o: ../FL/Fl_Valuator.H
Fl_Window_Driver.o: ../FL/Fl_Widget.H
Fl_Window_Driver.o: ../FL/Fl_Window.H
Fl_Window_Driver.o: ../FL/platform.H
Fl_Window_Driver.o: ../FL/platform_types.h
Fl_Window_Driver.o: ../FL/x11.H
Fl_Window_Driver.o: Fl_Screen_Driver.H
Fl_Window_Driver.o: Fl_Window_Driver.H
Fl_Window_fullscreen.o: ../FL/Enumerations.H
Fl_Window_fullscreen.o: ../FL/Fl.H
@ -3909,6 +4025,7 @@ Fl_x.o: ../FL/platform.H
Fl_x.o: ../FL/platform_types.h
Fl_x.o: ../FL/x11.H
Fl_x.o: drivers/Posix/Fl_Posix_System_Driver.H
Fl_x.o: drivers/Unix/Fl_Unix_System_Driver.H
Fl_x.o: drivers/X11/Fl_X11_Screen_Driver.H
Fl_x.o: drivers/X11/Fl_X11_System_Driver.H
Fl_x.o: drivers/X11/Fl_X11_Window_Driver.H