Bug: The window example called a callback method after child data was deleted
This commit is contained in:
parent
1bf4f2f906
commit
aa4caf4fcb
|
@ -1,3 +1,8 @@
|
||||||
|
2017-11-03 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Small NewFont improvements
|
||||||
|
* Fixed bug: The window example called a callback method after
|
||||||
|
the child data was deleted
|
||||||
|
|
||||||
2017-11-02 Markus Gans <guru.mail@muenster.de>
|
2017-11-02 Markus Gans <guru.mail@muenster.de>
|
||||||
* Move fonts into the root directory
|
* Move fonts into the root directory
|
||||||
|
|
||||||
|
|
|
@ -114,7 +114,11 @@ SmallWindow::SmallWindow (FWidget* parent)
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
SmallWindow::~SmallWindow()
|
SmallWindow::~SmallWindow()
|
||||||
{
|
{
|
||||||
|
// Remove own timer
|
||||||
delOwnTimer();
|
delOwnTimer();
|
||||||
|
|
||||||
|
// Remove all callbacks before Window::cb_destroyWindow() will be called
|
||||||
|
delCallbacks();
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -181,9 +185,9 @@ class Window : public FDialog
|
||||||
// Typedef
|
// Typedef
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
bool is_open;
|
bool is_open;
|
||||||
FString* title;
|
FString* title;
|
||||||
FDialog* dgl;
|
SmallWindow* dgl;
|
||||||
}
|
}
|
||||||
win_data;
|
win_data;
|
||||||
|
|
||||||
|
@ -416,7 +420,7 @@ void Window::cb_createWindows (FWidget*, data_ptr)
|
||||||
if ( ! (*iter)->is_open )
|
if ( ! (*iter)->is_open )
|
||||||
{
|
{
|
||||||
win_data* win_dat = *iter;
|
win_data* win_dat = *iter;
|
||||||
FDialog* win = new SmallWindow(this);
|
SmallWindow* win = new SmallWindow(this);
|
||||||
win_dat->dgl = win;
|
win_dat->dgl = win;
|
||||||
win_dat->is_open = true;
|
win_dat->is_open = true;
|
||||||
win->setText(*(win_dat)->title);
|
win->setText(*(win_dat)->title);
|
||||||
|
|
|
@ -1555,7 +1555,7 @@ void FListView::drawColumnLabels()
|
||||||
first = h.begin() + xoffset;
|
first = h.begin() + xoffset;
|
||||||
|
|
||||||
if ( int(h.size()) <= getClientWidth() )
|
if ( int(h.size()) <= getClientWidth() )
|
||||||
last = h.end();// - 1;
|
last = h.end();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int len = getClientWidth() + xoffset - 1;
|
int len = getClientWidth() + xoffset - 1;
|
||||||
|
|
|
@ -114,6 +114,7 @@ FWidget::FWidget (FWidget* parent, bool disable_alt_screen)
|
||||||
FWidget::~FWidget() // destructor
|
FWidget::~FWidget() // destructor
|
||||||
{
|
{
|
||||||
processDestroy();
|
processDestroy();
|
||||||
|
delCallbacks();
|
||||||
FApplication::removeQueuedEvent(this);
|
FApplication::removeQueuedEvent(this);
|
||||||
|
|
||||||
// unset clicked widget
|
// unset clicked widget
|
||||||
|
@ -1003,7 +1004,7 @@ void FWidget::delCallback (FWidget* cb_instance)
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
inline void FWidget::delCallbacks()
|
void FWidget::delCallbacks()
|
||||||
{
|
{
|
||||||
// delete all callbacks from this widget
|
// delete all callbacks from this widget
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue