Generalize hide() method
This commit is contained in:
parent
60e64be37b
commit
016f15c860
|
@ -1,3 +1,6 @@
|
||||||
|
2019-01-11 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Generalize hide() method
|
||||||
|
|
||||||
2019-01-09 Markus Gans <guru.mail@muenster.de>
|
2019-01-09 Markus Gans <guru.mail@muenster.de>
|
||||||
* Improvement in widget focusing
|
* Improvement in widget focusing
|
||||||
* Better widget visibility handling with the methods hide() and show()
|
* Better widget visibility handling with the methods hide() and show()
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* *
|
* *
|
||||||
* This file is part of the Final Cut widget toolkit *
|
* This file is part of the Final Cut widget toolkit *
|
||||||
* *
|
* *
|
||||||
* Copyright 2014-2018 Markus Gans *
|
* Copyright 2014-2019 Markus Gans *
|
||||||
* *
|
* *
|
||||||
* The Final Cut is free software; you can redistribute it and/or *
|
* The Final Cut is free software; you can redistribute it and/or *
|
||||||
* modify it under the terms of the GNU Lesser General Public License *
|
* modify it under the terms of the GNU Lesser General Public License *
|
||||||
|
@ -233,33 +233,8 @@ void FLabel::setText (const FString& txt)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FLabel::hide()
|
void FLabel::hide()
|
||||||
{
|
{
|
||||||
FColor fg, bg;
|
|
||||||
std::size_t size;
|
|
||||||
auto parent_widget = getParentWidget();
|
|
||||||
|
|
||||||
FWidget::hide();
|
FWidget::hide();
|
||||||
|
hideSize (getWidth(), getHeight());
|
||||||
if ( parent_widget )
|
|
||||||
{
|
|
||||||
fg = parent_widget->getForegroundColor();
|
|
||||||
bg = parent_widget->getBackgroundColor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fg = wc.dialog_fg;
|
|
||||||
bg = wc.dialog_bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
setColor (fg, bg);
|
|
||||||
size = getWidth();
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto blank = createBlankArray(size + 1);
|
|
||||||
setPrintPos (1, 1);
|
|
||||||
print (blank);
|
|
||||||
destroyBlankArray (blank);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -271,42 +271,12 @@ void FLineEdit::setLabelOrientation(const label_o o)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FLineEdit::hide()
|
void FLineEdit::hide()
|
||||||
{
|
{
|
||||||
std::size_t s, size;
|
|
||||||
FColor fg, bg;
|
|
||||||
auto parent_widget = getParentWidget();
|
|
||||||
|
|
||||||
FWidget::hide();
|
|
||||||
|
|
||||||
if ( parent_widget )
|
|
||||||
{
|
|
||||||
fg = parent_widget->getForegroundColor();
|
|
||||||
bg = parent_widget->getBackgroundColor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fg = wc.dialog_fg;
|
|
||||||
bg = wc.dialog_bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
setColor (fg, bg);
|
|
||||||
s = hasShadow() ? 1 : 0;
|
|
||||||
size = getWidth() + s;
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto blank = createBlankArray(size + 1);
|
|
||||||
|
|
||||||
for (std::size_t y = 0; y < getHeight() + s; y++)
|
|
||||||
{
|
|
||||||
setPrintPos (1, 1 + int(y));
|
|
||||||
print (blank);
|
|
||||||
}
|
|
||||||
|
|
||||||
destroyBlankArray(blank);
|
|
||||||
|
|
||||||
if ( label )
|
if ( label )
|
||||||
label->hide();
|
label->hide();
|
||||||
|
|
||||||
|
FWidget::hide();
|
||||||
|
std::size_t s = hasShadow() ? 1 : 0;
|
||||||
|
hideSize (getWidth() + s, getHeight() + s);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -214,38 +214,8 @@ void FListBox::setText (const FString& txt)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FListBox::hide()
|
void FListBox::hide()
|
||||||
{
|
{
|
||||||
std::size_t n, size;
|
|
||||||
FColor fg, bg;
|
|
||||||
auto parent_widget = getParentWidget();
|
|
||||||
FWidget::hide();
|
FWidget::hide();
|
||||||
|
hideSize (getWidth(), getHeight());
|
||||||
if ( parent_widget )
|
|
||||||
{
|
|
||||||
fg = parent_widget->getForegroundColor();
|
|
||||||
bg = parent_widget->getBackgroundColor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fg = wc.dialog_fg;
|
|
||||||
bg = wc.dialog_bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
setColor (fg, bg);
|
|
||||||
n = isNewFont() ? 1 : 0;
|
|
||||||
size = getWidth() + n;
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto blank = createBlankArray(size + 1);
|
|
||||||
|
|
||||||
for (int y = 0; y < int(getHeight()); y++)
|
|
||||||
{
|
|
||||||
setPrintPos (1, 1 + y);
|
|
||||||
print (blank);
|
|
||||||
}
|
|
||||||
|
|
||||||
destroyBlankArray (blank);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -752,6 +752,13 @@ int FListView::addColumn (const FString& label, int width)
|
||||||
return int(std::distance(header.begin(), header.end()));
|
return int(std::distance(header.begin(), header.end()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FListView::hide()
|
||||||
|
{
|
||||||
|
FWidget::hide();
|
||||||
|
hideSize (getWidth(), getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
FObject::FObjectIterator FListView::insert ( FListViewItem* item
|
FObject::FObjectIterator FListView::insert ( FListViewItem* item
|
||||||
, FObjectIterator parent_iter )
|
, FObjectIterator parent_iter )
|
||||||
|
|
|
@ -437,7 +437,6 @@ void FMenu::init(FWidget* parent)
|
||||||
setTransparentShadow();
|
setTransparentShadow();
|
||||||
setMenuWidget();
|
setMenuWidget();
|
||||||
hide();
|
hide();
|
||||||
//unsetVisible();
|
|
||||||
|
|
||||||
setForegroundColor (wc.menu_active_fg);
|
setForegroundColor (wc.menu_active_fg);
|
||||||
setBackgroundColor (wc.menu_active_bg);
|
setBackgroundColor (wc.menu_active_bg);
|
||||||
|
@ -586,7 +585,6 @@ void FMenu::openSubMenu (FMenu* sub_menu, bool select)
|
||||||
sub_menu->getSelectedItem()->setFocus();
|
sub_menu->getSelectedItem()->setFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
//sub_menu->setVisible();
|
|
||||||
sub_menu->show();
|
sub_menu->show();
|
||||||
opened_sub_menu = sub_menu;
|
opened_sub_menu = sub_menu;
|
||||||
raiseWindow (sub_menu);
|
raiseWindow (sub_menu);
|
||||||
|
|
|
@ -273,7 +273,6 @@ void FMenuItem::openMenu()
|
||||||
createDialogList (dd_menu);
|
createDialogList (dd_menu);
|
||||||
|
|
||||||
setOpenMenu(dd_menu);
|
setOpenMenu(dd_menu);
|
||||||
//dd_menu->setVisible();
|
|
||||||
dd_menu->show();
|
dd_menu->show();
|
||||||
dd_menu->raiseWindow();
|
dd_menu->raiseWindow();
|
||||||
dd_menu->redraw();
|
dd_menu->redraw();
|
||||||
|
|
|
@ -98,38 +98,9 @@ bool FProgressbar::setShadow (bool enable)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FProgressbar::hide()
|
void FProgressbar::hide()
|
||||||
{
|
{
|
||||||
FColor fg, bg;
|
|
||||||
auto parent_widget = getParentWidget();
|
|
||||||
|
|
||||||
FWidget::hide();
|
FWidget::hide();
|
||||||
|
|
||||||
if ( parent_widget )
|
|
||||||
{
|
|
||||||
fg = parent_widget->getForegroundColor();
|
|
||||||
bg = parent_widget->getBackgroundColor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fg = wc.dialog_fg;
|
|
||||||
bg = wc.dialog_bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
setColor (fg, bg);
|
|
||||||
std::size_t s = hasShadow() ? 1 : 0;
|
std::size_t s = hasShadow() ? 1 : 0;
|
||||||
auto size = getWidth() + s;
|
hideSize (getWidth() + s, getHeight() + s);
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto blank = createBlankArray(size + 1);
|
|
||||||
|
|
||||||
for (std::size_t y = 0; y < getHeight() + s; y++)
|
|
||||||
{
|
|
||||||
setPrintPos (1, 1 + int(y));
|
|
||||||
print (blank);
|
|
||||||
}
|
|
||||||
|
|
||||||
destroyBlankArray (blank);
|
|
||||||
setPrintPos (int(getWidth()) - 4, 0);
|
setPrintPos (int(getWidth()) - 4, 0);
|
||||||
print (" "); // hide percentage
|
print (" "); // hide percentage
|
||||||
}
|
}
|
||||||
|
|
|
@ -368,7 +368,7 @@ void FScrollView::scrollTo (int x, int y)
|
||||||
if ( update_scrollbar )
|
if ( update_scrollbar )
|
||||||
{
|
{
|
||||||
hbar->setValue (xoffset);
|
hbar->setValue (xoffset);
|
||||||
drawHBar();
|
hbar->drawBar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -381,7 +381,7 @@ void FScrollView::scrollTo (int x, int y)
|
||||||
if ( update_scrollbar )
|
if ( update_scrollbar )
|
||||||
{
|
{
|
||||||
vbar->setValue (yoffset);
|
vbar->setValue (yoffset);
|
||||||
drawVBar();
|
vbar->drawBar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -422,8 +422,8 @@ void FScrollView::draw()
|
||||||
|
|
||||||
setViewportPrint();
|
setViewportPrint();
|
||||||
copy2area();
|
copy2area();
|
||||||
redrawVBar();
|
vbar->redraw();
|
||||||
redrawHBar();
|
hbar->redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -981,36 +981,4 @@ void FScrollView::cb_HBarChange (FWidget*, FDataPtr)
|
||||||
update_scrollbar = true;
|
update_scrollbar = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FScrollView::redrawHBar()
|
|
||||||
{
|
|
||||||
child_print_area = nullptr;
|
|
||||||
hbar->redraw();
|
|
||||||
child_print_area = viewport;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FScrollView::redrawVBar()
|
|
||||||
{
|
|
||||||
child_print_area = nullptr;
|
|
||||||
vbar->redraw();
|
|
||||||
child_print_area = viewport;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FScrollView::drawHBar()
|
|
||||||
{
|
|
||||||
child_print_area = nullptr;
|
|
||||||
hbar->drawBar();
|
|
||||||
child_print_area = viewport;
|
|
||||||
}
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
inline void FScrollView::drawVBar()
|
|
||||||
{
|
|
||||||
child_print_area = nullptr;
|
|
||||||
vbar->drawBar();
|
|
||||||
child_print_area = viewport;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace finalcut
|
} // namespace finalcut
|
||||||
|
|
|
@ -157,7 +157,7 @@ void FTextView::scrollTo (int x, int y)
|
||||||
if ( update_scrollbar )
|
if ( update_scrollbar )
|
||||||
{
|
{
|
||||||
hbar->setValue (xoffset);
|
hbar->setValue (xoffset);
|
||||||
hbar->drawBar();;
|
hbar->drawBar();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,38 +186,8 @@ void FTextView::scrollTo (int x, int y)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FTextView::hide()
|
void FTextView::hide()
|
||||||
{
|
{
|
||||||
FColor fg, bg;
|
|
||||||
auto parent_widget = getParentWidget();
|
|
||||||
FWidget::hide();
|
FWidget::hide();
|
||||||
|
hideSize (getWidth(), getHeight());
|
||||||
if ( parent_widget )
|
|
||||||
{
|
|
||||||
fg = parent_widget->getForegroundColor();
|
|
||||||
bg = parent_widget->getBackgroundColor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fg = wc.dialog_fg;
|
|
||||||
bg = wc.dialog_bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
setColor (fg, bg);
|
|
||||||
std::size_t n = isNewFont() ? 1 : 0;
|
|
||||||
auto size = getWidth() + n;
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto blank = createBlankArray(size + 1);
|
|
||||||
|
|
||||||
for (std::size_t y = 0; y < getHeight(); y++)
|
|
||||||
{
|
|
||||||
setPrintPos (1, 1 + int(y));
|
|
||||||
print (blank);
|
|
||||||
}
|
|
||||||
|
|
||||||
destroyBlankArray (blank);
|
|
||||||
flush_out();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
* *
|
* *
|
||||||
* This file is part of the Final Cut widget toolkit *
|
* This file is part of the Final Cut widget toolkit *
|
||||||
* *
|
* *
|
||||||
* Copyright 2014-2018 Markus Gans *
|
* Copyright 2014-2019 Markus Gans *
|
||||||
* *
|
* *
|
||||||
* The Final Cut is free software; you can redistribute it and/or *
|
* The Final Cut is free software; you can redistribute it and/or *
|
||||||
* modify it under the terms of the GNU Lesser General Public License *
|
* modify it under the terms of the GNU Lesser General Public License *
|
||||||
|
@ -202,32 +202,8 @@ void FToggleButton::setText (const FString& txt)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FToggleButton::hide()
|
void FToggleButton::hide()
|
||||||
{
|
{
|
||||||
std::size_t size;
|
|
||||||
FColor fg, bg;
|
|
||||||
auto parent_widget = getParentWidget();
|
|
||||||
FWidget::hide();
|
FWidget::hide();
|
||||||
|
hideSize (getWidth(), getHeight());
|
||||||
if ( parent_widget )
|
|
||||||
{
|
|
||||||
fg = parent_widget->getForegroundColor();
|
|
||||||
bg = parent_widget->getBackgroundColor();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fg = wc.dialog_fg;
|
|
||||||
bg = wc.dialog_bg;
|
|
||||||
}
|
|
||||||
|
|
||||||
setColor (fg, bg);
|
|
||||||
size = getWidth();
|
|
||||||
|
|
||||||
if ( size == 0 )
|
|
||||||
return;
|
|
||||||
|
|
||||||
auto blank = createBlankArray(size + 1);
|
|
||||||
setPrintPos (1, 1);
|
|
||||||
print (blank);
|
|
||||||
destroyBlankArray (blank);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -1613,6 +1613,42 @@ void FWidget::adjustSizeGlobal()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------
|
||||||
|
void FWidget::hideSize (std::size_t width, std::size_t height)
|
||||||
|
{
|
||||||
|
if ( width == 0 || height == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
FColor fg, bg;
|
||||||
|
auto parent_widget = getParentWidget();
|
||||||
|
|
||||||
|
if ( parent_widget )
|
||||||
|
{
|
||||||
|
fg = parent_widget->getForegroundColor();
|
||||||
|
bg = parent_widget->getBackgroundColor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fg = wc.dialog_fg;
|
||||||
|
bg = wc.dialog_bg;
|
||||||
|
}
|
||||||
|
|
||||||
|
setColor (fg, bg);
|
||||||
|
auto blank = createBlankArray(width);
|
||||||
|
|
||||||
|
if ( blank == 0 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int y = 0; y < int(height); y++)
|
||||||
|
{
|
||||||
|
setPrintPos (1, 1 + y);
|
||||||
|
print (blank);
|
||||||
|
}
|
||||||
|
|
||||||
|
destroyBlankArray (blank);
|
||||||
|
flush_out();
|
||||||
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
bool FWidget::focusNextChild()
|
bool FWidget::focusNextChild()
|
||||||
{
|
{
|
||||||
|
|
|
@ -315,6 +315,7 @@ class FListView : public FWidget
|
||||||
|
|
||||||
// Methods
|
// Methods
|
||||||
virtual int addColumn (const FString&, int = USE_MAX_SIZE);
|
virtual int addColumn (const FString&, int = USE_MAX_SIZE);
|
||||||
|
virtual void hide() override;
|
||||||
FObjectIterator insert (FListViewItem*);
|
FObjectIterator insert (FListViewItem*);
|
||||||
FObjectIterator insert (FListViewItem*, FObjectIterator);
|
FObjectIterator insert (FListViewItem*, FObjectIterator);
|
||||||
FObjectIterator insert ( const FStringList&
|
FObjectIterator insert ( const FStringList&
|
||||||
|
|
|
@ -171,10 +171,6 @@ class FScrollView : public FWidget
|
||||||
void setHorizontalScrollBarVisibility();
|
void setHorizontalScrollBarVisibility();
|
||||||
void setVerticalScrollBarVisibility();
|
void setVerticalScrollBarVisibility();
|
||||||
void setViewportCursor();
|
void setViewportCursor();
|
||||||
void redrawHBar();
|
|
||||||
void redrawVBar();
|
|
||||||
void drawHBar();
|
|
||||||
void drawVBar();
|
|
||||||
|
|
||||||
// Callback methods
|
// Callback methods
|
||||||
void cb_VBarChange (FWidget*, FDataPtr);
|
void cb_VBarChange (FWidget*, FDataPtr);
|
||||||
|
|
|
@ -380,6 +380,7 @@ class FWidget : public FVTerm, public FObject
|
||||||
// Methods
|
// Methods
|
||||||
virtual void adjustSize();
|
virtual void adjustSize();
|
||||||
void adjustSizeGlobal();
|
void adjustSizeGlobal();
|
||||||
|
void hideSize (std::size_t, std::size_t);
|
||||||
virtual bool focusNextChild(); // Change child...
|
virtual bool focusNextChild(); // Change child...
|
||||||
virtual bool focusPrevChild(); // ...focus
|
virtual bool focusPrevChild(); // ...focus
|
||||||
|
|
||||||
|
@ -1019,6 +1020,9 @@ inline char* createBlankArray (std::size_t size)
|
||||||
{
|
{
|
||||||
char* blank;
|
char* blank;
|
||||||
|
|
||||||
|
if ( size == 0 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
blank = new char[size + 1];
|
blank = new char[size + 1];
|
||||||
|
|
Loading…
Reference in New Issue