summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES2
-rw-r--r--src/Fl_Tooltip.cxx6
-rw-r--r--src/fl_draw.cxx42
-rw-r--r--test/tabs.fl21
4 files changed, 39 insertions, 32 deletions
diff --git a/CHANGES b/CHANGES
index 3fbab9522..be63beef9 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,7 @@
CHANGES IN FLTK 1.1.8
+ - Fixed more inconsistencies between fl_draw
+ and fl_measure (STR #1408)
- Fixed fl_measure which mistook a trailing '@@'
for a symbol (STR #1406)
- Fixed GLUT behavior on window creation (STR #1403)
diff --git a/src/Fl_Tooltip.cxx b/src/Fl_Tooltip.cxx
index 2834b3cec..acba0be7d 100644
--- a/src/Fl_Tooltip.cxx
+++ b/src/Fl_Tooltip.cxx
@@ -194,7 +194,7 @@ Fl_Tooltip::exit_(Fl_Widget *w) {
widget_ = 0;
Fl::remove_timeout(tooltip_timeout);
Fl::remove_timeout(recent_timeout);
- if (window) window->hide();
+ if (window && window->visible()) window->hide();
if (recent_tooltip) {
if (Fl::event_state() & FL_BUTTONS) recent_tooltip = 0;
else Fl::add_timeout(Fl_Tooltip::hoverdelay(), recent_timeout);
@@ -233,11 +233,11 @@ Fl_Tooltip::enter_area(Fl_Widget* wid, int x,int y,int w,int h, const char* t)
#ifdef WIN32
// possible fix for the Windows titlebar, it seems to want the
// window to be destroyed, moving it messes up the parenting:
- if (window) window->hide();
+ if (window && window->visible()) window->hide();
#endif // WIN32
tooltip_timeout(0);
} else {
- if (window) window->hide();
+ if (window && window->visible()) window->hide();
Fl::add_timeout(Fl_Tooltip::delay(), tooltip_timeout);
}
diff --git a/src/fl_draw.cxx b/src/fl_draw.cxx
index d1fe15839..64aabb690 100644
--- a/src/fl_draw.cxx
+++ b/src/fl_draw.cxx
@@ -158,15 +158,13 @@ void fl_draw(
symtotal = symwidth[0] + symwidth[1];
- if (str) {
- for (p = str, lines=0; p;) {
- e = expand(p, buf, w - symtotal, buflen, width, align&FL_ALIGN_WRAP,
- draw_symbols);
- lines++;
- if (!*e || (*e == '@' && e[1] != '@' && draw_symbols)) break;
- p = e;
- }
- } else lines = 0;
+ for (p = str, lines=0; p;) {
+ e = expand(p, buf, w - symtotal, buflen, width, align&FL_ALIGN_WRAP,
+ draw_symbols);
+ lines++;
+ if (!*e || (*e == '@' && e[1] != '@' && draw_symbols)) break;
+ p = e;
+ }
if ((symwidth[0] || symwidth[1]) && lines) {
if (symwidth[0]) symwidth[0] = lines * fl_height();
@@ -295,19 +293,21 @@ void fl_measure(const char* str, int& w, int& h, int draw_symbols) {
symbol[1][0] = '\0';
symwidth[1] = 0;
- if (str && str[0] == '@' && str[1] && str[1] != '@') {
- // Start with a symbol...
- for (symptr = symbol[0];
- *str && !isspace(*str) && symptr < (symbol[0] + sizeof(symbol[0]) - 1);
- *symptr++ = *str++);
- *symptr = '\0';
- if (isspace(*str)) str++;
- symwidth[0] = h;
- }
+ if (draw_symbols) {
+ if (str && str[0] == '@' && str[1] && str[1] != '@') {
+ // Start with a symbol...
+ for (symptr = symbol[0];
+ *str && !isspace(*str) && symptr < (symbol[0] + sizeof(symbol[0]) - 1);
+ *symptr++ = *str++);
+ *symptr = '\0';
+ if (isspace(*str)) str++;
+ symwidth[0] = min(w,h);
+ }
- if (str && (p = strrchr(str, '@')) != NULL && p > (str + 1) && p[-1]!='@') {
- strlcpy(symbol[1], p, sizeof(symbol[1]));
- symwidth[1] = h;
+ if (str && (p = strrchr(str, '@')) != NULL && p > (str + 1) && p[-1]!='@') {
+ strlcpy(symbol[1], p, sizeof(symbol[1]));
+ symwidth[1] = min(w,h);
+ }
}
symtotal = symwidth[0] + symwidth[1];
diff --git a/test/tabs.fl b/test/tabs.fl
index 2f23562d6..4424f138a 100644
--- a/test/tabs.fl
+++ b/test/tabs.fl
@@ -1,18 +1,18 @@
# data file for the Fltk User Interface Designer (fluid)
-version 1.0107
+version 1.0108
header_name {.h}
code_name {.cxx}
Function {} {open
} {
Fl_Window foo_window {open
- xywh {561 88 320 331} type Double resizable visible
+ xywh {423 205 320 331} type Double resizable visible
} {
Fl_Tabs {} {open
tooltip {the various index cards test different aspects of the Fl_Tabs widget} xywh {10 10 300 200} selection_color 4 labelcolor 7 resizable
} {
Fl_Group {} {
- label Label1 open
- tooltip {this Tab tests correct keyboard navigation between text input fields} xywh {10 30 300 180} selection_color 1 hide resizable
+ label Label1 open selected
+ tooltip {this Tab tests correct keyboard navigation between text input fields} xywh {10 30 300 180} selection_color 1 resizable
} {
Fl_Input {} {
label {input:}
@@ -28,8 +28,8 @@ Function {} {open
}
}
Fl_Group {} {
- label tab2 open selected
- tooltip {tab2 tests among other things the cooperation of modal windows and tabs} xywh {10 30 300 180} selection_color 2
+ label tab2 open
+ tooltip {tab2 tests among other things the cooperation of modal windows and tabs} xywh {10 30 300 180} selection_color 2 hide
} {
Fl_Button {} {
label button1
@@ -93,16 +93,21 @@ Function {} {open
} {
Fl_Button {} {
label button2
- tooltip {button2 has a different tooltp than tab5} xywh {20 80 60 80}
+ tooltip {button2 has a different tooltp than tab5} xywh {20 45 60 80}
}
Fl_Button {} {
label button
- xywh {90 90 60 80}
+ xywh {90 45 60 80}
}
Fl_Clock {} {
label {Make sure this clock does not use processor time when this tab is hidden or window is iconized}
xywh {160 50 100 100} box OSHADOW_BOX color 238 selection_color 0 labelfont 8 labelsize 10 align 130
}
+ Fl_Group {} {
+ label subwindow open
+ xywh {20 135 130 65} box THIN_DOWN_BOX color 167 align 16
+ class Fl_Window
+ } {}
}
}
Fl_Input {} {