diff --git a/doc/final-cut-widget tree.svg b/doc/final-cut-widget tree.svg
index e96d08d4..2b911b0b 100644
--- a/doc/final-cut-widget tree.svg
+++ b/doc/final-cut-widget tree.svg
@@ -5,11 +5,39 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg61"
version="1.1"
- width="189.15524mm"
- viewBox="0 0 189.15524 79.081643"
- height="79.081642mm">
+ width="149.86537mm"
+ viewBox="0 0 149.86537 65.484895"
+ height="65.484894mm"
+ sodipodi:docname="final-cut-widget tree.svg"
+ inkscape:version="0.92.1 r15371">
+
@@ -34,7 +62,8 @@
transform="matrix(-0.4,0,0,-0.4,-4,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
- id="path4659" />
+ id="path4659"
+ inkscape:connector-curvature="0" />
+ id="path4671"
+ inkscape:connector-curvature="0" />
+ id="path4650"
+ inkscape:connector-curvature="0" />
+ id="path4659-6"
+ inkscape:connector-curvature="0" />
+ id="path4659-6-0"
+ inkscape:connector-curvature="0" />
+ id="path4659-6-0-3"
+ inkscape:connector-curvature="0" />
+ id="path4659-6-0-3-2"
+ inkscape:connector-curvature="0" />
+ transform="matrix(0.82806766,0,0,0.82760652,18.811674,-210.24741)"
+ style="stroke-width:1.20796716">
+ style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.5110532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097012;stroke-opacity:0">
FApplication
+ id="tspan4512"
+ style="stroke-width:0.51097012">FApplication
+ transform="matrix(0.82806766,0,0,0.82760652,25.151866,-0.20330766)"
+ id="g4560"
+ style="stroke-width:1.20796716">
+ style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.51105309;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097012;stroke-opacity:0">
FDialog
+ y="26.275915"
+ style="stroke-width:0.51097012">FDialog
+ transform="matrix(0.82806766,0,0,0.82760652,38.120716,15.124655)"
+ style="stroke-width:1.20796716">
+ style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.51105309;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097012;stroke-opacity:0">
FDialog
+ y="26.275915"
+ style="stroke-width:0.51097012">FDialog
+ transform="matrix(0.82806766,0,0,0.82760652,12.006292,15.124655)"
+ style="stroke-width:1.20796716">
+ style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.51105309;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097012;stroke-opacity:0">
FLabel
+ id="tspan4610"
+ style="stroke-width:0.51097012">FLabel
+ transform="matrix(0.82806766,0,0,0.82760652,25.151866,-0.20330766)"
+ id="g6273"
+ style="stroke-width:1.20796716">
+ style="opacity:1;fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.51105309;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
+ style="font-weight:bold;font-size:4.93888903px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.51097012;stroke-opacity:0">
FButton
+ y="63.317585"
+ style="stroke-width:0.51097012">FButton
+ style="font-style:italic;font-weight:bold;font-size:4.08859491px;font-family:FreeSans, Arial, 'Bitstream Vera Sans', 'DejaVu Sans', 'Open Sans', sans-serif;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;letter-spacing:0;word-spacing:0;writing-mode:lr-tb;text-anchor:middle;fill:#1a1a1a;stroke-width:0.42300001;stroke-opacity:0"
+ x="62.287796"
+ y="65.409096"
+ id="text47-6-3-6-5"
+ transform="scale(1.0002786,0.99972148)">
etc.
+ d="M 49.251306,9.2100164 V 14.9971"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306879;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend)"
+ inkscape:connector-curvature="0" />
+ d="m 42.679299,24.537976 v 5.779196"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306873;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9)"
+ inkscape:connector-curvature="0" />
+ d="m 55.736511,24.537898 v 5.779196"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306867;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9-7)"
+ inkscape:connector-curvature="0" />
+ d="m 62.369882,39.865938 v 5.548839"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306867;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9-7-1)"
+ inkscape:connector-curvature="0" />
+ d="m 62.369882,55.193909 v 5.548839"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.42306867;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Mend-9-7-1-7)"
+ inkscape:connector-curvature="0" />
+ transform="matrix(0.82806766,0,0,0.82760652,25.151866,-0.20330766)"
+ id="level"
+ style="stroke-width:1.20796716">
Parent:
Child:
Subchild:
Sub-subchild:
+ transform="matrix(0.82806766,0,0,0.82760652,107.7173,-0.20330766)"
+ style="stroke-width:1.20796716">
Application widget (= 1)
Main widget (= 1)
Widget(s) of the main widget (≥ 0)
Widget(s) from the parent widget (≥ 0)
diff --git a/doc/first-steps.md b/doc/first-steps.md
index b7d5bf52..172a4e64 100644
--- a/doc/first-steps.md
+++ b/doc/first-steps.md
@@ -89,9 +89,10 @@ unique and can not have a parent widget. The class `FApplication` manages
all settings and assigns keyboard and mouse input to the different widgets.
+
The main widget of a FINAL CUT application is the only object that
`FApplication` can have as a child. This main widget is usually a window
diff --git a/src/include/final/foptiattr.h b/src/include/final/foptiattr.h
index d0aa7abf..76c4d37b 100644
--- a/src/include/final/foptiattr.h
+++ b/src/include/final/foptiattr.h
@@ -337,26 +337,6 @@ inline void FOptiAttr::setDefaultColorSupport()
inline void FOptiAttr::unsetDefaultColorSupport()
{ ansi_default_color = false; }
-
-// FChar operator functions
-//----------------------------------------------------------------------
-inline bool operator == ( const FChar& lhs,
- const FChar& rhs )
-{
- return lhs.ch == rhs.ch
- && lhs.fg_color == rhs.fg_color
- && lhs.bg_color == rhs.bg_color
- && lhs.attr.byte[0] == rhs.attr.byte[0]
- && lhs.attr.byte[1] == rhs.attr.byte[1]
- && lhs.attr.bit.fullwidth_padding \
- == rhs.attr.bit.fullwidth_padding;
-}
-
-//----------------------------------------------------------------------
-inline bool operator != ( const FChar& lhs,
- const FChar& rhs )
-{ return ! ( lhs == rhs ); }
-
} // namespace finalcut
#endif // FOPTIATTR_H
diff --git a/src/include/final/ftypes.h b/src/include/final/ftypes.h
index bf2947ab..f4c65fc2 100644
--- a/src/include/final/ftypes.h
+++ b/src/include/final/ftypes.h
@@ -187,6 +187,25 @@ FKeyName;
} // namespace fc
+// FChar operator functions
+//----------------------------------------------------------------------
+inline constexpr bool operator == (const FChar& lhs, const FChar& rhs)
+{
+ return lhs.ch == rhs.ch
+ && lhs.fg_color == rhs.fg_color
+ && lhs.bg_color == rhs.bg_color
+ && lhs.attr.byte[0] == rhs.attr.byte[0]
+ && lhs.attr.byte[1] == rhs.attr.byte[1]
+ && lhs.attr.bit.fullwidth_padding \
+ == rhs.attr.bit.fullwidth_padding;
+}
+
+//----------------------------------------------------------------------
+inline constexpr bool operator != (const FChar& lhs, const FChar& rhs)
+{
+ return ! ( lhs == rhs );
+}
+
} // namespace finalcut
#endif // FTYPES_H