summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES20
-rw-r--r--fluid/Fl_Widget_Type.cxx24
2 files changed, 28 insertions, 16 deletions
diff --git a/CHANGES b/CHANGES
index 1d8a36720..3b5a7cdb8 100644
--- a/CHANGES
+++ b/CHANGES
@@ -35,19 +35,19 @@ CHANGES IN FLTK 1.1.8
- Fixed Fl_Positioner callback when released (STR #1387)
- Fixed WIN32 zero size window issue (STR #1387)
- Fixed Sudoku window positioning (STR #1398)
- - Fluid Code Declarations can now handle
- C++ style comments (STR #1383)
- - Fixed uninitialized data in OS X and WIN32
- timout functions (STR #1374).
- - Fixed speed issues when measuring text on OS X
- with Quartz (STR #1386).
+ - Fluid Code Declarations can now handle C++ style
+ comments (STR #1383)
+ - Fixed uninitialized data in OS X and WIN32 timeout
+ functions (STR #1374).
+ - Fixed speed issues when measuring text on OS X with
+ Quartz (STR #1386).
- Fixed focus issues on OS X (STR #1377)
- Optional precission argument when storing floats or
doubles in a Preferences file (STR #1381)
- - Fixed callback not called when using arrow keys
- in Fl_Slider (STR #1333)
- - Changing the shorcut of a widget in fluid now marks
- the document as dirty (STR #1382)
+ - Fixed callback not called when using arrow keys in
+ Fl_Slider (STR #1333)
+ - Changing the shorcut of a widget in fluid now marks the
+ document as dirty (STR #1382)
- Fl_Text_Editor now correctly handles middle mouse
clicks (STR #1384)
- Added some GLUT4 functions (STR #1370)
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx
index 8d936830e..68ea38bd9 100644
--- a/fluid/Fl_Widget_Type.cxx
+++ b/fluid/Fl_Widget_Type.cxx
@@ -1985,12 +1985,24 @@ void Fl_Widget_Type::write_code1() {
if (!varused) {
for (int n=0; n < NUM_EXTRA_CODE; n++)
- if (extra_code(n) && !isdeclare(extra_code(n)) &&
- (ptr = strstr(extra_code(n), "o->")) != NULL &&
- (ptr == extra_code(n) ||
- (!isalnum(ptr[-1] & 255) && ptr[-1] != '_'))) {
- varused = 1;
- break;
+ if (extra_code(n) && !isdeclare(extra_code(n)))
+ {
+ int instring = 0;
+ int inname = 0;
+ for (ptr = extra_code(n); *ptr; ptr ++)
+ if (instring) {
+ if (*ptr == '\\') ptr++;
+ else if (*ptr == '\"') instring = 0;
+ } else if (inname && !isalnum(*ptr & 255)) inname = 0;
+ else if (*ptr == '\"') instring = 1;
+ else if (!strncmp(ptr, "o->", 3) || !strncmp(ptr, "o)", 2) ||
+ !strncmp(ptr, "o,", 2) || !strncmp(ptr, "o ", 2)) break;
+ else if (isalnum(*ptr & 255)) inname = 1;
+
+ if (*ptr) {
+ varused = 1;
+ break;
+ }
}
}