Code cleaning

This commit is contained in:
Markus Gans 2019-10-06 22:35:00 +02:00
parent 66ff1ba208
commit 937654710b
18 changed files with 1097 additions and 1146 deletions

View File

@ -97,12 +97,12 @@ printf(...)
│ │createArea(area) │ ║ │ │createArea(area) │ ║
│ │ │ ║ │ │ │ ║
│ │ │ ║ │ │ │ ║
└───┼─────────────► ──────► updateVTerm(area) ────► ║ └───┼────────► putArea(area) ────► ║
│ │ ║
│ putArea(x,y,area) ────► ║
│ │ ║
│ ◄──── getArea(x,y,area) ║
│ │ ║ │ │ ║
│ putArea(x,y,area) ║
│ ────────────────────► ║
│ getArea(x,y,area) ║
│ ◄──────────────────── ║
│ │ ║ │ │ ║
│ │ ║ │ │ ║
│ resizeArea(area)│ ║ │ resizeArea(area)│ ║

View File

@ -23,12 +23,12 @@ printf(...)
│ │createArea(area) │ ║ │ │createArea(area) │ ║
│ │ │ ║ │ │ │ ║
│ │ │ ║ │ │ │ ║
└───┼─────────────► ──────► updateVTerm(area) ────► ║ └───┼────────► putArea(area) ────► ║
│ │ ║
│ putArea(x,y,area) ────► ║
│ │ ║
│ ◄──── getArea(x,y,area) ║
│ │ ║ │ │ ║
│ putArea(x,y,area) ║
│ ────────────────────► ║
│ getArea(x,y,area) ║
│ ◄──────────────────── ║
│ │ ║ │ │ ║
│ │ ║ │ │ ║
│ resizeArea(area)│ ║ │ resizeArea(area)│ ║

View File

@ -798,7 +798,7 @@ FWidget*& FApplication::determineClickedWidget()
if ( window ) if ( window )
{ {
// Determine the widget at the current click position // Determine the widget at the current click position
auto child = childWidgetAt (window, mouse_position); auto child = window->childWidgetAt (mouse_position);
clicked = ( child != 0 ) ? child : window; clicked = ( child != 0 ) ? child : window;
setClickedWidget (clicked); setClickedWidget (clicked);
} }

View File

@ -440,9 +440,9 @@ inline std::size_t FButton::clickAnimationIndent (FWidget* parent_widget)
// noshadow + indent one character to the right // noshadow + indent one character to the right
if ( getFlags().flat ) if ( getFlags().flat )
clearFlatBorder(); clearFlatBorder(this);
else if ( hasShadow() ) else if ( hasShadow() )
clearShadow(); clearShadow(this);
if ( parent_widget ) if ( parent_widget )
setColor ( parent_widget->getForegroundColor() setColor ( parent_widget->getForegroundColor()
@ -639,7 +639,7 @@ void FButton::draw()
setReverse(false); // Dark background setReverse(false); // Dark background
if ( getFlags().flat && ! button_down ) if ( getFlags().flat && ! button_down )
drawFlatBorder(); drawFlatBorder(this);
hotkeypos = finalcut::getHotkeyPos(text, button_text); hotkeypos = finalcut::getHotkeyPos(text, button_text);
@ -665,7 +665,7 @@ void FButton::draw()
// Draw button shadow // Draw button shadow
if ( ! getFlags().flat && getFlags().shadow && ! button_down ) if ( ! getFlags().flat && getFlags().shadow && ! button_down )
drawShadow(); drawShadow(this);
if ( isMonochron() ) if ( isMonochron() )
setReverse(false); // Dark background setReverse(false); // Dark background

View File

@ -748,7 +748,7 @@ void FDialog::drawDialogShadow()
if ( isMonochron() && ! getFlags().trans_shadow ) if ( isMonochron() && ! getFlags().trans_shadow )
return; return;
drawShadow(); drawShadow(this);
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View File

@ -791,7 +791,7 @@ void FLineEdit::drawInputField()
} }
if ( getFlags().shadow ) if ( getFlags().shadow )
drawShadow (); drawShadow(this);
// set the cursor to the insert pos. // set the cursor to the insert pos.
auto cursor_pos_column = getColumnWidth (text, cursor_pos); auto cursor_pos_column = getColumnWidth (text, cursor_pos);

View File

@ -1178,7 +1178,7 @@ void FMenu::draw()
clearArea(); clearArea();
drawBorder(); drawBorder();
drawItems(); drawItems();
drawShadow(); drawShadow(this);
if ( isMonochron() ) if ( isMonochron() )
setReverse(false); setReverse(false);

View File

@ -131,7 +131,7 @@ void FProgressbar::draw()
drawProgressBar(); drawProgressBar();
if ( getFlags().shadow ) if ( getFlags().shadow )
drawShadow (); drawShadow(this);
flush_out(); flush_out();
} }

View File

@ -2150,6 +2150,7 @@ void FTerm::useNormalScreenBuffer()
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline void FTerm::allocationValues() inline void FTerm::allocationValues()
{ {
FStartOptions::getFStartOptions();
getFTermData(); getFTermData();
getFSystem(); getFSystem();
getFOptiMove(); getFOptiMove();

File diff suppressed because it is too large Load Diff

View File

@ -43,10 +43,10 @@ FStatusBar* FWidget::statusbar{nullptr};
FMenuBar* FWidget::menubar{nullptr}; FMenuBar* FWidget::menubar{nullptr};
FWidget* FWidget::show_root_widget{nullptr}; FWidget* FWidget::show_root_widget{nullptr};
FWidget* FWidget::redraw_root_widget{nullptr}; FWidget* FWidget::redraw_root_widget{nullptr};
FWidget::widgetList* FWidget::window_list{nullptr}; FWidget::FWidgetList* FWidget::window_list{nullptr};
FWidget::widgetList* FWidget::dialog_list{nullptr}; FWidget::FWidgetList* FWidget::dialog_list{nullptr};
FWidget::widgetList* FWidget::always_on_top_list{nullptr}; FWidget::FWidgetList* FWidget::always_on_top_list{nullptr};
FWidget::widgetList* FWidget::close_widget{nullptr}; FWidget::FWidgetList* FWidget::close_widget{nullptr};
FWidgetColors FWidget::wcolors{}; FWidgetColors FWidget::wcolors{};
bool FWidget::init_desktop{false}; bool FWidget::init_desktop{false};
bool FWidget::hideable{false}; bool FWidget::hideable{false};
@ -170,9 +170,8 @@ FWidget* FWidget::getFirstFocusableWidget (FObjectList list)
return 0; return 0;
auto iter = list.begin(); auto iter = list.begin();
auto last = list.end();
while ( iter != last ) while ( iter != list.end() )
{ {
if ( (*iter)->isWidget() ) if ( (*iter)->isWidget() )
{ {
@ -194,7 +193,6 @@ FWidget* FWidget::getLastFocusableWidget (FObjectList list)
if ( list.empty() ) if ( list.empty() )
return 0; return 0;
auto first = list.begin();
auto iter = list.end(); auto iter = list.end();
do do
@ -209,19 +207,11 @@ FWidget* FWidget::getLastFocusableWidget (FObjectList list)
if ( child->isEnabled() && child->acceptFocus() ) if ( child->isEnabled() && child->acceptFocus() )
return child; return child;
} }
while ( iter != first ); while ( iter != list.begin() );
return 0; return 0;
} }
//----------------------------------------------------------------------
FPoint FWidget::getPrintPos()
{
const auto cur = getPrintCursor();
return FPoint ( cur.getX() - woffset.getX1() - getX() + 1
, cur.getY() - woffset.getY1() - getY() + 1 );
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
std::vector<bool>& FWidget::doubleFlatLine_ref (fc::sides side) std::vector<bool>& FWidget::doubleFlatLine_ref (fc::sides side)
{ {
@ -248,6 +238,14 @@ std::vector<bool>& FWidget::doubleFlatLine_ref (fc::sides side)
return double_flatline_mask.left; return double_flatline_mask.left;
} }
//----------------------------------------------------------------------
FPoint FWidget::getPrintPos()
{
const auto cur = getPrintCursor();
return FPoint ( cur.getX() - woffset.getX1() - getX() + 1
, cur.getY() - woffset.getY1() - getY() + 1 );
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FWidget::setMainWidget (FWidget* obj) void FWidget::setMainWidget (FWidget* obj)
{ {
@ -757,34 +755,26 @@ void FWidget::setDoubleFlatLine (fc::sides side, int pos, bool bit)
} }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
FWidget* FWidget::childWidgetAt (FWidget* p, const FPoint& pos) FWidget* FWidget::childWidgetAt (const FPoint& pos)
{ {
if ( p && p->hasChildren() ) if ( ! hasChildren() )
{ return 0;
auto iter = p->begin();
auto last = p->end();
while ( iter != last ) for (auto&& child : getChildren())
{ {
if ( ! (*iter)->isWidget() ) if ( ! child->isWidget() )
{
++iter;
continue; continue;
}
auto widget = static_cast<FWidget*>(*iter); auto widget = static_cast<FWidget*>(child);
if ( widget->isEnabled() if ( widget->isEnabled()
&& widget->isShown() && widget->isShown()
&& ! widget->isWindowWidget() && ! widget->isWindowWidget()
&& widget->getTermGeometry().contains(pos) ) && widget->getTermGeometry().contains(pos) )
{ {
auto child = childWidgetAt(widget, pos); auto child = widget->childWidgetAt(pos);
return ( child != 0 ) ? child : widget; return ( child != 0 ) ? child : widget;
} }
++iter;
}
} }
return 0; return 0;
@ -797,22 +787,18 @@ int FWidget::numOfFocusableChildren()
return 0; return 0;
int num{0}; int num{0};
auto iter = FObject::begin();
auto last = FObject::end();
while ( iter != last ) for (auto&& child : getChildren())
{ {
if ( (*iter)->isWidget() ) if ( child->isWidget() )
{ {
auto widget = static_cast<FWidget*>(*iter); auto widget = static_cast<FWidget*>(child);
if ( widget->isShown() if ( widget->isShown()
&& widget->acceptFocus() && widget->acceptFocus()
&& ! widget->isWindowWidget() ) && ! widget->isWindowWidget() )
num++; num++;
} }
++iter;
} }
return num; return num;
@ -921,19 +907,14 @@ void FWidget::emitCallback (const FString& emit_signal)
if ( callback_objects.empty() ) if ( callback_objects.empty() )
return; return;
auto iter = callback_objects.begin(); for (auto&& cback : callback_objects)
auto last = callback_objects.end();
while ( iter != last )
{ {
if ( iter->cb_signal == emit_signal ) if ( cback.cb_signal == emit_signal )
{ {
// Calling the stored function pointer // Calling the stored function pointer
auto callback = iter->cb_function; auto callback = cback.cb_function;
callback (this, iter->data); callback (this, cback.data);
} }
++iter;
} }
} }
@ -1073,20 +1054,15 @@ void FWidget::show()
if ( hasChildren() ) if ( hasChildren() )
{ {
auto iter = FObject::begin(); for (auto&& child : getChildren())
auto last = FObject::end();
while ( iter != last )
{ {
if ( (*iter)->isWidget() ) if ( child->isWidget() )
{ {
auto widget = static_cast<FWidget*>(*iter); auto widget = static_cast<FWidget*>(child);
if ( ! widget->flags.hidden ) if ( ! widget->flags.hidden )
widget->show(); widget->show();
} }
++iter;
} }
} }
@ -1208,22 +1184,6 @@ bool FWidget::focusLastChild()
return false; return false;
} }
//----------------------------------------------------------------------
void FWidget::detectTermSize()
{
auto r = rootObject;
FTerm::detectTermSize();
r->adjust_wsize.setRect (1, 1, getDesktopWidth(), getDesktopHeight());
r->woffset.setRect (0, 0, getDesktopWidth(), getDesktopHeight());
r->wclient_offset.setCoordinates
(
r->padding.left,
r->padding.top,
int(getDesktopWidth()) - 1 - r->padding.right,
int(getDesktopHeight()) - 1 - r->padding.bottom
);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FWidget::move (const FPoint& pos) void FWidget::move (const FPoint& pos)
{ {
@ -1231,201 +1191,6 @@ void FWidget::move (const FPoint& pos)
adjust_wsize.move(pos); adjust_wsize.move(pos);
} }
//----------------------------------------------------------------------
void FWidget::drawShadow()
{
if ( isMonochron() && ! flags.trans_shadow )
return;
if ( (getEncoding() == fc::VT100 && ! flags.trans_shadow)
|| (getEncoding() == fc::ASCII && ! flags.trans_shadow) )
{
clearShadow();
return;
}
int x1 = 1;
int x2 = int(getWidth());
int y1 = 1;
int y2 = int(getHeight());
if ( flags.trans_shadow )
{
// transparent shadow
drawTransparentShadow (x1, y1, x2, y2);
}
else
{
// non-transparent shadow
drawBlockShadow (x1, y1, x2, y2);
}
}
//----------------------------------------------------------------------
void FWidget::clearShadow()
{
if ( isMonochron() )
return;
int w = int(getWidth());
int h = int(getHeight());
if ( isWindowWidget() )
{
setColor (wcolors.shadow_fg, wcolors.shadow_bg);
setInheritBackground(); // current background color will be ignored
}
else if ( auto p = getParentWidget() )
setColor (wcolors.shadow_fg, p->getBackgroundColor());
if ( w <= woffset.getX2() )
{
for (std::size_t y{1}; y <= getHeight(); y++)
{
print() << FPoint(w + 1, int(y)) << ' '; // clear █
}
}
if ( h <= woffset.getY2() )
{
print() << FPoint(2, h + 1);
for (std::size_t i{1}; i <= getWidth(); i++)
print (' '); // clear ▀
}
if ( isWindowWidget() )
unsetInheritBackground();
}
//----------------------------------------------------------------------
void FWidget::drawFlatBorder()
{
if ( ! isNewFont() )
return;
int x1 = 1;
int x2 = int(getWidth() + 1);
int y1 = 0;
int y2 = int(getHeight() + 1);
if ( auto p = getParentWidget() )
setColor (wcolors.dialog_fg, p->getBackgroundColor());
else
setColor (wcolors.dialog_fg, wcolors.dialog_bg);
for (std::size_t y{0}; y < getHeight(); y++)
{
print() << FPoint(x1 - 1, y1 + int(y) + 1);
if ( double_flatline_mask.left[uLong(y)] )
// left+right line (on left side)
print (fc::NF_rev_border_line_right_and_left);
else
// right line (on left side)
print (fc::NF_rev_border_line_right);
}
print() << FPoint(x2, y1 + 1);
for (std::size_t y{0}; y < getHeight(); y++)
{
if ( double_flatline_mask.right[y] )
// left+right line (on right side)
print (fc::NF_rev_border_line_right_and_left);
else
// left line (on right side)
print (fc::NF_border_line_left);
print() << FPoint(x2, y1 + int(y) + 2);
}
print() << FPoint(x1, y1);
for (std::size_t x{0}; x < getWidth(); x++)
{
if ( double_flatline_mask.top[x] )
// top+bottom line (at top)
print (fc::NF_border_line_up_and_down);
else
// bottom line (at top)
print (fc::NF_border_line_bottom);
}
print() << FPoint(x1, y2);
for (std::size_t x{0}; x < getWidth(); x++)
{
if ( double_flatline_mask.bottom[x] )
// top+bottom line (at bottom)
print (fc::NF_border_line_up_and_down);
else
// top line (at bottom)
print (fc::NF_border_line_upper);
}
}
//----------------------------------------------------------------------
void FWidget::clearFlatBorder()
{
if ( ! isNewFont() )
return;
int x1 = 1;
int x2 = int(getWidth() + 1);
int y1 = 0;
int y2 = int(getHeight() + 1);
if ( auto p = getParentWidget() )
setColor (wcolors.dialog_fg, p->getBackgroundColor());
else
setColor (wcolors.dialog_fg, wcolors.dialog_bg);
// clear on left side
for (std::size_t y{0}; y < getHeight(); y++)
{
print() << FPoint(x1 - 1, y1 + int(y) + 1);
if ( double_flatline_mask.left[y] )
print (fc::NF_border_line_left);
else
print (' ');
}
// clear on right side
for (std::size_t y{0}; y < getHeight(); y++)
{
print() << FPoint(x2, y1 + int(y) + 1);
if ( double_flatline_mask.right[y] )
print (fc::NF_rev_border_line_right);
else
print (' ');
}
// clear at top
print() << FPoint(x1, y1);
for (std::size_t x{0}; x < getWidth(); x++)
{
if ( double_flatline_mask.top[x] )
print (fc::NF_border_line_upper);
else
print (' ');
}
// clear at bottom
print() << FPoint(x1, y2);
for (std::size_t x{0}; x < getWidth(); x++)
{
if ( double_flatline_mask.bottom[x] )
print (fc::NF_border_line_bottom);
else
print (' ');
}
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FWidget::quit() void FWidget::quit()
{ {
@ -1566,19 +1331,15 @@ void FWidget::adjustSize()
if ( hasChildren() ) if ( hasChildren() )
{ {
auto iter = FObject::begin(); for (auto&& child : getChildren())
auto last = FObject::end();
while ( iter != last )
{ {
if ( (*iter)->isWidget() ) if ( child->isWidget() )
{ {
auto widget = static_cast<FWidget*>(*iter); auto widget = static_cast<FWidget*>(child);
if ( ! widget->isWindowWidget() ) if ( ! widget->isWindowWidget() )
widget->adjustSize(); widget->adjustSize();
} }
++iter;
} }
} }
} }
@ -1940,10 +1701,10 @@ void FWidget::init()
try try
{ {
// Initialize widget lists // Initialize widget lists
window_list = new widgetList(); window_list = new FWidgetList();
dialog_list = new widgetList(); dialog_list = new FWidgetList();
always_on_top_list = new widgetList(); always_on_top_list = new FWidgetList();
close_widget = new widgetList(); close_widget = new FWidgetList();
} }
catch (const std::bad_alloc& ex) catch (const std::bad_alloc& ex)
{ {
@ -2175,22 +1936,16 @@ void FWidget::drawWindows()
if ( ! window_list || window_list->empty() ) if ( ! window_list || window_list->empty() )
return; return;
auto iter = window_list->begin(); for (auto&& window : *window_list)
auto last = window_list->end();
while ( iter != last )
{ {
if ( (*iter)->isShown() ) if ( window->isShown() )
{ {
auto win = (*iter)->getVWin(); auto win = window->getVWin();
int w = win->width + win->right_shadow; int w = win->width + win->right_shadow;
int h = win->height + win->bottom_shadow; int h = win->height + win->bottom_shadow;
std::fill_n (win->text, w * h, default_char); std::fill_n (win->text, w * h, default_char);
window->redraw();
(*iter)->redraw();
} }
++iter;
} }
} }
@ -2201,97 +1956,18 @@ void FWidget::drawChildren()
if ( ! hasChildren() ) if ( ! hasChildren() )
return; return;
auto iter = FObject::begin(); for (auto&& child : getChildren())
auto last = FObject::end();
while ( iter != last )
{ {
if ( (*iter)->isWidget() ) if ( child->isWidget() )
{ {
auto widget = static_cast<FWidget*>(*iter); auto widget = static_cast<FWidget*>(child);
if ( widget->isShown() && ! widget->isWindowWidget() ) if ( widget->isShown() && ! widget->isWindowWidget() )
widget->redraw(); widget->redraw();
} }
++iter;
} }
} }
//----------------------------------------------------------------------
void FWidget::drawTransparentShadow (int x1, int y1, int x2, int y2)
{
// transparent shadow
setTransparent();
print() << FPoint(x2 + 1, y1) << " ";
unsetTransparent();
setColor (wcolors.shadow_bg, wcolors.shadow_fg);
setTransShadow();
for (std::size_t y{1}; y < getHeight(); y++)
{
print() << FPoint(x2 + 1, y1 + int(y)) << " ";
}
unsetTransShadow();
setTransparent();
print() << FPoint(x1, y2 + 1) << " ";
unsetTransparent();
setColor (wcolors.shadow_bg, wcolors.shadow_fg);
setTransShadow();
for (std::size_t x{2}; x <= getWidth() + 1; x++)
print (' ');
unsetTransShadow();
if ( isMonochron() )
setReverse(false);
}
//----------------------------------------------------------------------
void FWidget::drawBlockShadow (int x1, int y1, int x2, int y2)
{
// non-transparent shadow
if ( ! hasShadowCharacter() )
return;
print() << FPoint(x2 + 1, y1);
if ( isWindowWidget() )
{
setColor (wcolors.shadow_fg, wcolors.shadow_bg);
setInheritBackground(); // current background color will be ignored
}
else if ( auto p = getParentWidget() )
setColor (wcolors.shadow_fg, p->getBackgroundColor());
print (fc::LowerHalfBlock); // ▄
if ( isWindowWidget() )
unsetInheritBackground();
for (std::size_t y{1}; y < getHeight(); y++)
{
print() << FPoint(x2 + 1, y1 + int(y)) << fc::FullBlock; // █
}
print() << FPoint(x1 + 1, y2 + 1);
if ( isWindowWidget() )
setInheritBackground();
for (std::size_t x{1}; x <= getWidth(); x++)
print (fc::UpperHalfBlock); // ▀
if ( isWindowWidget() )
unsetInheritBackground();
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void FWidget::setColorTheme() void FWidget::setColorTheme()
{ {
@ -2305,6 +1981,22 @@ void FWidget::setColorTheme()
// non-member functions // non-member functions
//----------------------------------------------------------------------
void detectTermSize()
{
auto r = rootObject;
FTerm::detectTermSize();
r->adjust_wsize.setRect (1, 1, r->getDesktopWidth(), r->getDesktopHeight());
r->woffset.setRect (0, 0, r->getDesktopWidth(), r->getDesktopHeight());
r->wclient_offset.setCoordinates
(
r->padding.left,
r->padding.top,
int(r->getDesktopWidth()) - 1 - r->padding.right,
int(r->getDesktopHeight()) - 1 - r->padding.bottom
);
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
FKey getHotkey (const FString& text) FKey getHotkey (const FString& text)
{ {
@ -2382,6 +2074,273 @@ void setHotkeyViaString (FWidget* w, const FString& text)
w->delAccelerator(); w->delAccelerator();
} }
//----------------------------------------------------------------------
void drawShadow (FWidget* w)
{
if ( w->isMonochron() && ! w->flags.trans_shadow )
return;
if ( (w->getEncoding() == fc::VT100 && ! w->flags.trans_shadow)
|| (w->getEncoding() == fc::ASCII && ! w->flags.trans_shadow) )
{
clearShadow(w);
return;
}
int x1 = 1;
int x2 = int(w->getWidth());
int y1 = 1;
int y2 = int(w->getHeight());
if ( w->flags.trans_shadow )
{
// transparent shadow
drawTransparentShadow (w, x1, y1, x2, y2);
}
else
{
// non-transparent shadow
drawBlockShadow (w, x1, y1, x2, y2);
}
}
//----------------------------------------------------------------------
void drawTransparentShadow (FWidget* w, int x1, int y1, int x2, int y2)
{
// transparent shadow
w->setTransparent();
w->print() << FPoint(x2 + 1, y1) << " ";
w->unsetTransparent();
w->setColor (w->wcolors.shadow_bg, w->wcolors.shadow_fg);
w->setTransShadow();
for (std::size_t y{1}; y < w->getHeight(); y++)
{
w->print() << FPoint(x2 + 1, y1 + int(y)) << " ";
}
w->unsetTransShadow();
w->setTransparent();
w->print() << FPoint(x1, y2 + 1) << " ";
w->unsetTransparent();
w->setColor (w->wcolors.shadow_bg, w->wcolors.shadow_fg);
w->setTransShadow();
for (std::size_t x{2}; x <= w->getWidth() + 1; x++)
w->print (' ');
w->unsetTransShadow();
if ( w->isMonochron() )
w->setReverse(false);
}
//----------------------------------------------------------------------
void drawBlockShadow (FWidget* w, int x1, int y1, int x2, int y2)
{
// non-transparent shadow
if ( ! w->hasShadowCharacter() )
return;
w->print() << FPoint(x2 + 1, y1);
if ( w->isWindowWidget() )
{
w->setColor (w->wcolors.shadow_fg, w->wcolors.shadow_bg);
w->setInheritBackground(); // current background color will be ignored
}
else if ( auto p = w->getParentWidget() )
w->setColor (w->wcolors.shadow_fg, p->getBackgroundColor());
w->print (fc::LowerHalfBlock); // ▄
if ( w->isWindowWidget() )
w->unsetInheritBackground();
for (std::size_t y{1}; y < w->getHeight(); y++)
{
w->print() << FPoint(x2 + 1, y1 + int(y)) << fc::FullBlock; // █
}
w->print() << FPoint(x1 + 1, y2 + 1);
if ( w->isWindowWidget() )
w->setInheritBackground();
for (std::size_t x{1}; x <= w->getWidth(); x++)
w->print (fc::UpperHalfBlock); // ▀
if ( w->isWindowWidget() )
w->unsetInheritBackground();
}
//----------------------------------------------------------------------
void clearShadow (FWidget* w)
{
if ( w->isMonochron() )
return;
int width = int(w->getWidth());
int height = int(w->getHeight());
if ( w->isWindowWidget() )
{
w->setColor (w->wcolors.shadow_fg, w->wcolors.shadow_bg);
w->setInheritBackground(); // current background color will be ignored
}
else if ( auto p = w->getParentWidget() )
w->setColor (w->wcolors.shadow_fg, p->getBackgroundColor());
if ( width <= w->woffset.getX2() )
{
for (std::size_t y{1}; y <= w->getHeight(); y++)
{
w->print() << FPoint(width + 1, int(y)) << ' '; // clear █
}
}
if ( height <= w->woffset.getY2() )
{
w->print() << FPoint(2, height + 1);
for (std::size_t i{1}; i <= w->getWidth(); i++)
w->print (' '); // clear ▀
}
if ( w->isWindowWidget() )
w->unsetInheritBackground();
}
//----------------------------------------------------------------------
void drawFlatBorder (FWidget* w)
{
if ( ! w->isNewFont() )
return;
int x1 = 1;
int x2 = int(w->getWidth() + 1);
int y1 = 0;
int y2 = int(w->getHeight() + 1);
if ( auto p = w->getParentWidget() )
w->setColor (w->wcolors.dialog_fg, p->getBackgroundColor());
else
w->setColor (w->wcolors.dialog_fg, w->wcolors.dialog_bg);
for (std::size_t y{0}; y < w->getHeight(); y++)
{
w->print() << FPoint(x1 - 1, y1 + int(y) + 1);
if ( w->double_flatline_mask.left[uLong(y)] )
// left+right line (on left side)
w->print (fc::NF_rev_border_line_right_and_left);
else
// right line (on left side)
w->print (fc::NF_rev_border_line_right);
}
w->print() << FPoint(x2, y1 + 1);
for (std::size_t y{0}; y < w->getHeight(); y++)
{
if ( w->double_flatline_mask.right[y] )
// left+right line (on right side)
w->print (fc::NF_rev_border_line_right_and_left);
else
// left line (on right side)
w->print (fc::NF_border_line_left);
w->print() << FPoint(x2, y1 + int(y) + 2);
}
w->print() << FPoint(x1, y1);
for (std::size_t x{0}; x < w->getWidth(); x++)
{
if ( w->double_flatline_mask.top[x] )
// top+bottom line (at top)
w->print (fc::NF_border_line_up_and_down);
else
// bottom line (at top)
w->print (fc::NF_border_line_bottom);
}
w->print() << FPoint(x1, y2);
for (std::size_t x{0}; x < w->getWidth(); x++)
{
if ( w->double_flatline_mask.bottom[x] )
// top+bottom line (at bottom)
w->print (fc::NF_border_line_up_and_down);
else
// top line (at bottom)
w->print (fc::NF_border_line_upper);
}
}
//----------------------------------------------------------------------
void clearFlatBorder (FWidget* w)
{
if ( ! w->isNewFont() )
return;
int x1 = 1;
int x2 = int(w->getWidth() + 1);
int y1 = 0;
int y2 = int(w->getHeight() + 1);
if ( auto p = w->getParentWidget() )
w->setColor (w->wcolors.dialog_fg, p->getBackgroundColor());
else
w->setColor (w->wcolors.dialog_fg, w->wcolors.dialog_bg);
// clear on left side
for (std::size_t y{0}; y < w->getHeight(); y++)
{
w->print() << FPoint(x1 - 1, y1 + int(y) + 1);
if ( w->double_flatline_mask.left[y] )
w->print (fc::NF_border_line_left);
else
w->print (' ');
}
// clear on right side
for (std::size_t y{0}; y < w->getHeight(); y++)
{
w->print() << FPoint(x2, y1 + int(y) + 1);
if ( w->double_flatline_mask.right[y] )
w->print (fc::NF_rev_border_line_right);
else
w->print (' ');
}
// clear at top
w->print() << FPoint(x1, y1);
for (std::size_t x{0}; x < w->getWidth(); x++)
{
if ( w->double_flatline_mask.top[x] )
w->print (fc::NF_border_line_upper);
else
w->print (' ');
}
// clear at bottom
w->print() << FPoint(x1, y2);
for (std::size_t x{0}; x < w->getWidth(); x++)
{
if ( w->double_flatline_mask.bottom[x] )
w->print (fc::NF_border_line_bottom);
else
w->print (' ');
}
}
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline void drawBox (FWidget* w, const FRect& r) inline void drawBox (FWidget* w, const FRect& r)
{ {

View File

@ -107,18 +107,12 @@ void FWindow::setActiveWindow (FWindow* window)
{ {
// activate FWindow object window // activate FWindow object window
if ( ! getWindowList() ) if ( ! getWindowList() || getWindowList()->empty() )
return; return;
if ( getWindowList()->empty() ) for (auto&& win : *getWindowList())
return;
auto iter = getWindowList()->begin();
auto end = getWindowList()->end();
while ( iter != end )
{ {
if ( *iter == window ) if ( win == window )
{ {
if ( ! window->isWindowActive() ) if ( ! window->isWindowActive() )
{ {
@ -129,17 +123,15 @@ void FWindow::setActiveWindow (FWindow* window)
} }
else else
{ {
auto w = static_cast<FWindow*>(*iter); auto w = static_cast<FWindow*>(win);
if ( w->isWindowActive() ) if ( w->isWindowActive() )
{ {
w->deactivateWindow(); w->deactivateWindow();
FEvent ev(fc::WindowInactive_Event); FEvent ev(fc::WindowInactive_Event);
FApplication::sendEvent(*iter, &ev); FApplication::sendEvent(win, &ev);
} }
} }
++iter;
} }
} }
@ -478,7 +470,7 @@ void FWindow::delWindow (FWidget* obj)
{ {
if ( (*iter) == obj ) if ( (*iter) == obj )
{ {
getWindowList()->erase (iter); getWindowList()->erase(iter);
return; return;
} }

View File

@ -168,7 +168,7 @@ class FFileDialog : public FDialog
typedef std::vector<dir_entry> dirEntries; typedef std::vector<dir_entry> dirEntries;
// Method // Methods
void init(); void init();
void widgetSettings (const FPoint&); void widgetSettings (const FPoint&);
void initCallbacks(); void initCallbacks();

View File

@ -309,7 +309,7 @@ class FMouseX11 final : public FMouse
// Constant // Constant
static constexpr std::size_t MOUSE_BUF_SIZE = 4; static constexpr std::size_t MOUSE_BUF_SIZE = 4;
// Method // Methods
void setKeyState (int); void setKeyState (int);
void setMoveState (const FPoint&, int); void setMoveState (const FPoint&, int);
void setButtonState (int, struct timeval*); void setButtonState (int, struct timeval*);

View File

@ -123,7 +123,7 @@ class FScrollView : public FWidget
bool hasBorder(); bool hasBorder();
bool isViewportPrint(); bool isViewportPrint();
// Method // Methods
void clearArea (int = ' ') override; void clearArea (int = ' ') override;
void scrollToX (int); void scrollToX (int);
void scrollToY (int); void scrollToY (int);
@ -148,7 +148,7 @@ class FScrollView : public FWidget
// Accessor // Accessor
term_area* getPrintArea() override; term_area* getPrintArea() override;
// Method // Methods
void adjustSize() override; void adjustSize() override;
void copy2area(); void copy2area();

View File

@ -108,7 +108,7 @@ class FToggleButton : public FWidget
// Inquiries // Inquiries
bool isChecked(); bool isChecked();
// Methods // Method
void hide() override; void hide() override;
// Event handlers // Event handlers

View File

@ -57,10 +57,6 @@
#include "final/fc.h" #include "final/fc.h"
#include "final/fterm.h" #include "final/fterm.h"
// Preprocessing handler macro
//#define F_PREPROC_HANDLER(i,h)
// static_cast<FVTerm*>((i))
// , reinterpret_cast<FVTerm::FPreprocessingHandler>((h))
#define F_PREPROC_HANDLER(i,h) \ #define F_PREPROC_HANDLER(i,h) \
reinterpret_cast<FVTerm*>((i)), \ reinterpret_cast<FVTerm*>((i)), \
std::bind ( reinterpret_cast<FVTerm::FPreprocessingHandler>((h)) \ std::bind ( reinterpret_cast<FVTerm::FPreprocessingHandler>((h)) \
@ -296,7 +292,6 @@ class FVTerm
virtual void addPreprocessingHandler ( FVTerm* virtual void addPreprocessingHandler ( FVTerm*
, FVTermPreprocessing ); , FVTermPreprocessing );
virtual void delPreprocessingHandler (FVTerm*); virtual void delPreprocessingHandler (FVTerm*);
template<typename... Args> template<typename... Args>
int printf (const FString, Args&&...); int printf (const FString, Args&&...);
int print (const FString&); int print (const FString&);
@ -316,13 +311,6 @@ class FVTerm
static void redefineDefaultColors (bool); static void redefineDefaultColors (bool);
protected: protected:
// Enumeration
enum character_type
{
overlapped_character,
covered_character
};
// Accessor // Accessor
virtual term_area* getPrintArea(); virtual term_area* getPrintArea();
term_area* getChildPrintArea() const; term_area* getChildPrintArea() const;
@ -341,9 +329,6 @@ class FVTerm
static void setInsertCursor (bool); static void setInsertCursor (bool);
static void setInsertCursor(); static void setInsertCursor();
static void unsetInsertCursor(); static void unsetInsertCursor();
static bool setUTF8 (bool);
static bool setUTF8();
static bool unsetUTF8();
// Inquiries // Inquiries
bool hasPrintArea() const; bool hasPrintArea() const;
@ -353,6 +338,7 @@ class FVTerm
static bool hasShadowCharacter(); static bool hasShadowCharacter();
// Methods // Methods
void createArea ( const FRect& void createArea ( const FRect&
, const FSize& , const FSize&
, term_area*& ); , term_area*& );
@ -361,15 +347,54 @@ class FVTerm
, term_area* ); , term_area* );
static void removeArea (term_area*&); static void removeArea (term_area*&);
static void restoreVTerm (const FRect&); static void restoreVTerm (const FRect&);
bool updateVTermCursor (term_area*);
static void setAreaCursor ( const FPoint&
, bool, term_area* );
static void getArea (const FPoint&, term_area*);
static void getArea (const FRect&, term_area*);
void putArea (term_area*);
static void putArea (const FPoint&, term_area*);
void scrollAreaForward (term_area*);
void scrollAreaReverse (term_area*);
void clearArea (term_area*, int = ' ');
void processTerminalUpdate();
static void startTerminalUpdate();
static void finishTerminalUpdate();
static void flush_out();
static void initScreenSettings();
static void changeTermSizeFinished();
static void exitWithMessage (const FString&)
#if defined(__clang__) || defined(__GNUC__)
__attribute__((noreturn))
#endif
;
private:
// Enumerations
enum character_type
{
overlapped_character,
covered_character
};
enum exit_state
{
not_used,
used,
line_completely_printed
};
// Constants
// Buffer size for character output on the terminal
static constexpr uInt TERMINAL_OUTPUT_BUFFER_SIZE = 32768;
// Methods
void setTextToDefault (term_area*, const FSize&); void setTextToDefault (term_area*, const FSize&);
static bool reallocateTextArea ( term_area* static bool reallocateTextArea ( term_area*
, std::size_t , std::size_t
, std::size_t ); , std::size_t );
static bool reallocateTextArea ( term_area* static bool reallocateTextArea ( term_area*
, std::size_t ); , std::size_t );
static covered_state isCovered (const FPoint&, term_area*); static covered_state isCovered (const FPoint&, term_area*);
static void updateOverlappedColor ( term_area* static void updateOverlappedColor ( term_area*
, const FPoint& , const FPoint&
, const FPoint& ); , const FPoint& );
@ -387,50 +412,17 @@ class FVTerm
static bool updateVTermCharacter ( term_area* static bool updateVTermCharacter ( term_area*
, const FPoint& , const FPoint&
, const FPoint& ); , const FPoint& );
static void callPreprocessingHandler (term_area*);
void updateVTerm(); void updateVTerm();
void updateVTerm (term_area*); static void callPreprocessingHandler (term_area*);
bool updateVTermCursor (term_area*); bool hasChildAreaChanges (term_area*);
void clearChildAreaChanges (term_area*);
static bool isInsideArea (const FPoint&, term_area*); static bool isInsideArea (const FPoint&, term_area*);
static void setAreaCursor ( const FPoint&
, bool, term_area* );
static void getArea (const FPoint&, term_area*);
static void getArea (const FRect&, term_area*);
static void putArea (const FPoint&, term_area*);
void scrollAreaForward (term_area*);
void scrollAreaReverse (term_area*);
void clearArea (term_area*, int = ' ');
static charData generateCharacter (const FPoint&); static charData generateCharacter (const FPoint&);
static charData getCharacter ( character_type static charData getCharacter ( character_type
, const FPoint& , const FPoint&
, FVTerm* ); , FVTerm* );
static charData getCoveredCharacter (const FPoint&, FVTerm*); static charData getCoveredCharacter (const FPoint&, FVTerm*);
static charData getOverlappedCharacter (const FPoint&, FVTerm*); static charData getOverlappedCharacter (const FPoint&, FVTerm*);
void processTerminalUpdate();
static void startTerminalUpdate();
static void finishTerminalUpdate();
static void flush_out();
static void initScreenSettings();
static void changeTermSizeFinished();
static void exitWithMessage (const FString&)
#if defined(__clang__) || defined(__GNUC__)
__attribute__((noreturn))
#endif
;
private:
// Enumeration
enum exit_state
{
not_used,
used,
line_completely_printed
};
// Constants
// Buffer size for character output on the terminal
static constexpr uInt TERMINAL_OUTPUT_BUFFER_SIZE = 32768;
// Methods
void init (bool); void init (bool);
static void init_characterLengths (FOptiMove*); static void init_characterLengths (FOptiMove*);
void finish(); void finish();
@ -534,7 +526,7 @@ struct FVTerm::term_area // define virtual terminal character properties
int input_cursor_x{-1}; // X-position input cursor int input_cursor_x{-1}; // X-position input cursor
int input_cursor_y{-1}; // Y-position input cursor int input_cursor_y{-1}; // Y-position input cursor
FWidget* widget{nullptr}; // Widget that owns this term_area FWidget* widget{nullptr}; // Widget that owns this term_area
FPreprocessing preprocessing_call{}; FPreprocessing preproc_list{};
line_changes* changes{nullptr}; line_changes* changes{nullptr};
charData* text{nullptr}; // Text data for the output charData* text{nullptr}; // Text data for the output
bool input_cursor_visible{false}; bool input_cursor_visible{false};
@ -1125,18 +1117,6 @@ inline void FVTerm::setInsertCursor()
inline void FVTerm::unsetInsertCursor() inline void FVTerm::unsetInsertCursor()
{ return FTerm::setInsertCursor(false); } { return FTerm::setInsertCursor(false); }
//----------------------------------------------------------------------
inline bool FVTerm::setUTF8 (bool enable)
{ return FTerm::setUTF8(enable); }
//----------------------------------------------------------------------
inline bool FVTerm::setUTF8()
{ return FTerm::setUTF8(true); }
//----------------------------------------------------------------------
inline bool FVTerm::unsetUTF8()
{ return FTerm::setUTF8(false); }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline bool FVTerm::hasPrintArea() const inline bool FVTerm::hasPrintArea() const
{ return print_area; } { return print_area; }

View File

@ -146,7 +146,7 @@ class FWidget : public FVTerm, public FObject
}; };
// Typedefs // Typedefs
typedef std::vector<FWidget*> widgetList; typedef std::vector<FWidget*> FWidgetList;
typedef std::vector<accelerator> Accelerators; typedef std::vector<accelerator> Accelerators;
typedef void (*FCallbackPtr)(FWidget*, FDataPtr); typedef void (*FCallbackPtr)(FWidget*, FDataPtr);
typedef void (FWidget::*FMemberCallback)(FWidget*, FDataPtr); typedef void (FWidget::*FMemberCallback)(FWidget*, FDataPtr);
@ -197,16 +197,18 @@ class FWidget : public FVTerm, public FObject
static FWidget*& getClickedWidget(); static FWidget*& getClickedWidget();
static FWidget*& getOpenMenu(); static FWidget*& getOpenMenu();
static FWidget*& getMoveSizeWidget(); static FWidget*& getMoveSizeWidget();
static FWidgetList*& getWindowList();
static FMenuBar* getMenuBar();
static FStatusBar* getStatusBar();
virtual FWidget* getFirstFocusableWidget (FObjectList); virtual FWidget* getFirstFocusableWidget (FObjectList);
virtual FWidget* getLastFocusableWidget (FObjectList); virtual FWidget* getLastFocusableWidget (FObjectList);
Accelerators* getAcceleratorList() const; Accelerators* getAcceleratorList() const;
static widgetList*& getWindowList();
static FMenuBar* getMenuBar();
static FStatusBar* getStatusBar();
FString getStatusbarMessage() const; FString getStatusbarMessage() const;
FColor getForegroundColor() const; // get the primary FColor getForegroundColor() const; // get the primary
FColor getBackgroundColor() const; // widget colors FColor getBackgroundColor() const; // widget colors
int getX() const; // positioning std::vector<bool>& doubleFlatLine_ref (fc::sides);
// Positioning and sizes accessors...
int getX() const;
int getY() const; int getY() const;
const FPoint getPos() const; const FPoint getPos() const;
int getTermX() const; int getTermX() const;
@ -233,7 +235,6 @@ class FWidget : public FVTerm, public FObject
const widget_flags& getFlags() const; const widget_flags& getFlags() const;
FPoint getCursorPos(); FPoint getCursorPos();
FPoint getPrintPos(); FPoint getPrintPos();
std::vector<bool>& doubleFlatLine_ref (fc::sides);
// Mutators // Mutators
static void setMainWidget (FWidget*); static void setMainWidget (FWidget*);
@ -264,7 +265,9 @@ class FWidget : public FVTerm, public FObject
void setForegroundColor (FColor); void setForegroundColor (FColor);
void setBackgroundColor (FColor); void setBackgroundColor (FColor);
void setColor(); void setColor();
virtual void setX (int, bool = true); // positioning widget_flags& setFlags();
// Positioning and sizes mutators...
virtual void setX (int, bool = true);
virtual void setY (int, bool = true); virtual void setY (int, bool = true);
virtual void setPos (const FPoint&, bool = true); virtual void setPos (const FPoint&, bool = true);
virtual void setWidth (std::size_t, bool = true); virtual void setWidth (std::size_t, bool = true);
@ -295,7 +298,6 @@ class FWidget : public FVTerm, public FObject
void unsetDoubleFlatLine (fc::sides); void unsetDoubleFlatLine (fc::sides);
void setDoubleFlatLine (fc::sides, int, bool = true); void setDoubleFlatLine (fc::sides, int, bool = true);
void unsetDoubleFlatLine (fc::sides, int); void unsetDoubleFlatLine (fc::sides, int);
widget_flags& setFlags();
// Inquiries // Inquiries
bool isRootWidget() const; bool isRootWidget() const;
@ -311,7 +313,7 @@ class FWidget : public FVTerm, public FObject
bool isPaddingIgnored(); bool isPaddingIgnored();
// Methods // Methods
static FWidget* childWidgetAt (FWidget*, const FPoint&); FWidget* childWidgetAt (const FPoint&);
int numOfFocusableChildren(); int numOfFocusableChildren();
virtual bool close(); virtual bool close();
void clearStatusbarMessage(); void clearStatusbarMessage();
@ -337,13 +339,8 @@ class FWidget : public FVTerm, public FObject
virtual bool focusFirstChild(); // widget focusing virtual bool focusFirstChild(); // widget focusing
virtual bool focusLastChild(); virtual bool focusLastChild();
FPoint termToWidgetPos (const FPoint&); FPoint termToWidgetPos (const FPoint&);
void detectTermSize();
void print (const FPoint&) override; void print (const FPoint&) override;
virtual void move (const FPoint&); virtual void move (const FPoint&);
void drawShadow();
void clearShadow();
void drawFlatBorder();
void clearFlatBorder();
virtual void drawBorder(); virtual void drawBorder();
static void quit(); static void quit();
@ -363,11 +360,10 @@ class FWidget : public FVTerm, public FObject
term_area* getPrintArea() override; term_area* getPrintArea() override;
const FWidgetColors& getFWidgetColors() const; const FWidgetColors& getFWidgetColors() const;
static uInt getModalDialogCounter(); static uInt getModalDialogCounter();
static widgetList*& getDialogList(); static FWidgetList*& getDialogList();
static widgetList*& getAlwaysOnTopList(); static FWidgetList*& getAlwaysOnTopList();
static widgetList*& getWidgetCloseList(); static FWidgetList*& getWidgetCloseList();
void addPreprocessingHandler ( FVTerm* void addPreprocessingHandler (FVTerm*, FVTermPreprocessing) override;
, FVTermPreprocessing ) override;
void delPreprocessingHandler (FVTerm*) override; void delPreprocessingHandler (FVTerm*) override;
// Inquiry // Inquiry
@ -420,8 +416,6 @@ class FWidget : public FVTerm, public FObject
virtual void draw(); virtual void draw();
void drawWindows(); void drawWindows();
void drawChildren(); void drawChildren();
void drawTransparentShadow (int, int, int, int);
void drawBlockShadow (int, int, int, int);
static void setColorTheme(); static void setColorTheme();
// Data members // Data members
@ -505,10 +499,10 @@ class FWidget : public FVTerm, public FObject
static FWidget* move_size_widget; static FWidget* move_size_widget;
static FWidget* show_root_widget; static FWidget* show_root_widget;
static FWidget* redraw_root_widget; static FWidget* redraw_root_widget;
static widgetList* window_list; static FWidgetList* window_list;
static widgetList* dialog_list; static FWidgetList* dialog_list;
static widgetList* always_on_top_list; static FWidgetList* always_on_top_list;
static widgetList* close_widget; static FWidgetList* close_widget;
static FWidgetColors wcolors; static FWidgetColors wcolors;
static uInt modal_dialog_counter; static uInt modal_dialog_counter;
static bool init_desktop; static bool init_desktop;
@ -517,15 +511,32 @@ class FWidget : public FVTerm, public FObject
// Friend classes // Friend classes
friend class FToggleButton; friend class FToggleButton;
friend class FScrollView; friend class FScrollView;
// Friend functions
friend void detectTermSize();
friend void drawShadow (FWidget*);
friend void drawTransparentShadow (FWidget*, int, int, int, int);
friend void drawBlockShadow (FWidget*, int, int, int, int);
friend void clearShadow (FWidget*);
friend void drawFlatBorder (FWidget*);
friend void clearFlatBorder (FWidget*);
}; };
// non-member function forward declarations // non-member function forward declarations
//---------------------------------------------------------------------- //----------------------------------------------------------------------
void detectTermSize();
FKey getHotkey (const FString&); FKey getHotkey (const FString&);
std::size_t getHotkeyPos (const FString& src, FString& dest); std::size_t getHotkeyPos (const FString& src, FString& dest);
void setHotkeyViaString (FWidget*, const FString&); void setHotkeyViaString (FWidget*, const FString&);
void drawBorder (FWidget*, FRect); void drawBorder (FWidget*, FRect);
void drawShadow (FWidget*);
void drawTransparentShadow (FWidget*, int, int, int, int);
void drawBlockShadow (FWidget*, int, int, int, int);
void clearShadow (FWidget*);
void drawFlatBorder (FWidget*);
void clearFlatBorder (FWidget*);
// FWidget inline functions // FWidget inline functions
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -557,11 +568,7 @@ inline FWidget*& FWidget::getMoveSizeWidget()
{ return move_size_widget; } { return move_size_widget; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline FWidget::Accelerators* FWidget::getAcceleratorList() const inline FWidget::FWidgetList*& FWidget::getWindowList()
{ return accelerator_list; }
//----------------------------------------------------------------------
inline FWidget::widgetList*& FWidget::getWindowList()
{ return window_list; } { return window_list; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
@ -572,6 +579,10 @@ inline FMenuBar* FWidget::getMenuBar()
inline FStatusBar* FWidget::getStatusBar() inline FStatusBar* FWidget::getStatusBar()
{ return statusbar; } { return statusbar; }
//----------------------------------------------------------------------
inline FWidget::Accelerators* FWidget::getAcceleratorList() const
{ return accelerator_list; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline FString FWidget::getStatusbarMessage() const inline FString FWidget::getStatusbarMessage() const
{ return statusbar_message; } { return statusbar_message; }
@ -821,6 +832,10 @@ inline void FWidget::setBackgroundColor (FColor color)
background_color = color; background_color = color;
} }
//----------------------------------------------------------------------
inline FWidget::widget_flags& FWidget::setFlags()
{ return flags; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline void FWidget::setGeometry (const FRect& box, bool adjust) inline void FWidget::setGeometry (const FRect& box, bool adjust)
{ {
@ -878,10 +893,6 @@ inline void FWidget::unsetDoubleFlatLine (fc::sides side)
inline void FWidget::unsetDoubleFlatLine (fc::sides side, int pos) inline void FWidget::unsetDoubleFlatLine (fc::sides side, int pos)
{ setDoubleFlatLine(side, pos, false); } { setDoubleFlatLine(side, pos, false); }
//----------------------------------------------------------------------
inline FWidget::widget_flags& FWidget::setFlags()
{ return flags; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline bool FWidget::isRootWidget() const inline bool FWidget::isRootWidget() const
{ return (! hasParent()); } { return (! hasParent()); }
@ -966,15 +977,15 @@ inline uInt FWidget::getModalDialogCounter()
{ return modal_dialog_counter; } { return modal_dialog_counter; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline FWidget::widgetList*& FWidget::getDialogList() inline FWidget::FWidgetList*& FWidget::getDialogList()
{ return dialog_list; } { return dialog_list; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline FWidget::widgetList*& FWidget::getAlwaysOnTopList() inline FWidget::FWidgetList*& FWidget::getAlwaysOnTopList()
{ return always_on_top_list; } { return always_on_top_list; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------
inline FWidget::widgetList*& FWidget::getWidgetCloseList() inline FWidget::FWidgetList*& FWidget::getWidgetCloseList()
{ return close_widget; } { return close_widget; }
//---------------------------------------------------------------------- //----------------------------------------------------------------------