Bug fix for FWindow::activatePrevWindow()
This commit is contained in:
parent
e29e58acb6
commit
a179e190f9
|
@ -1,3 +1,6 @@
|
|||
2016-06-26 Markus Gans <guru.mail@muenster.de>
|
||||
* Bug fix for FWindow::activatePrevWindow()
|
||||
|
||||
2016-06-25 Markus Gans <guru.mail@muenster.de>
|
||||
* Move processNextEvent() code into sub functions
|
||||
|
||||
|
|
|
@ -753,6 +753,8 @@ void FDialog::onWindowActive (FEvent*)
|
|||
//----------------------------------------------------------------------
|
||||
void FDialog::onWindowInactive (FEvent*)
|
||||
{
|
||||
FWindow::previous_widget = this;
|
||||
|
||||
if ( isVisible() && isEnabled() )
|
||||
drawTitleBar();
|
||||
|
||||
|
|
|
@ -128,6 +128,7 @@ class FWidget : public FObject, public FTerm
|
|||
typedef std::vector<accelerator> Accelerators;
|
||||
Accelerators* accelerator_list;
|
||||
|
||||
protected:
|
||||
static struct widget_colors
|
||||
{
|
||||
short term_fg;
|
||||
|
@ -212,19 +213,18 @@ class FWidget : public FObject, public FTerm
|
|||
} wc;
|
||||
// widget_colors wc;
|
||||
|
||||
struct dbl_line_mask
|
||||
{
|
||||
dbl_line_mask() : top(), right(), bottom(), left()
|
||||
{ }
|
||||
~dbl_line_mask()
|
||||
{ }
|
||||
std::vector<bool> top;
|
||||
std::vector<bool> right;
|
||||
std::vector<bool> bottom;
|
||||
std::vector<bool> left;
|
||||
} double_flatline_mask;
|
||||
struct dbl_line_mask
|
||||
{
|
||||
dbl_line_mask() : top(), right(), bottom(), left()
|
||||
{ }
|
||||
~dbl_line_mask()
|
||||
{ }
|
||||
std::vector<bool> top;
|
||||
std::vector<bool> right;
|
||||
std::vector<bool> bottom;
|
||||
std::vector<bool> left;
|
||||
} double_flatline_mask;
|
||||
|
||||
protected:
|
||||
int xpos;
|
||||
int ypos;
|
||||
int width;
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
#include "fstatusbar.h"
|
||||
#include "fwindow.h"
|
||||
|
||||
// static attributes
|
||||
FWindow* FWindow::previous_widget = 0;
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// class FWindow
|
||||
//----------------------------------------------------------------------
|
||||
|
@ -87,8 +90,9 @@ void FWindow::hide()
|
|||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
FWindow* FWindow::getWindowWidgetAt(int x, int y)
|
||||
FWindow* FWindow::getWindowWidgetAt (int x, int y)
|
||||
{
|
||||
// returns the window object to the corresponding coordinates
|
||||
if ( statusBar() && statusBar()->getGeometryGlobal().contains(x,y) )
|
||||
return statusBar();
|
||||
|
||||
|
@ -367,25 +371,15 @@ void FWindow::switchToPrevWindow()
|
|||
bool FWindow::activatePrevWindow()
|
||||
{
|
||||
// activate the previous window
|
||||
if ( window_list && window_list->size() > 1 )
|
||||
FWindow* w = previous_widget;
|
||||
|
||||
if ( w && ! w->isHiddenWindow() && ! w->isActiveWindow() )
|
||||
{
|
||||
widgetList::const_iterator iter, begin;
|
||||
iter = window_list->end();
|
||||
begin = window_list->begin();
|
||||
--iter;
|
||||
do
|
||||
{
|
||||
--iter;
|
||||
FWindow* w = static_cast<FWindow*>(*iter);
|
||||
if ( w && ! w->isHiddenWindow() && ! w->isActiveWindow() )
|
||||
{
|
||||
setActiveWindow(w);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
while ( iter != begin );
|
||||
setActiveWindow(w);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
|
|
@ -46,6 +46,9 @@ class FWindow : public FWidget
|
|||
private:
|
||||
bool window_active;
|
||||
|
||||
protected:
|
||||
static FWindow* previous_widget;
|
||||
|
||||
private:
|
||||
FWindow (const FWindow&);
|
||||
FWindow& operator = (const FWindow&);
|
||||
|
|
Loading…
Reference in New Issue