Ensure old focus is cleared when showing an overlay.

This commit is contained in:
casey langen 2019-03-17 15:23:23 -07:00
parent a4dd717c37
commit 6a742b950e
6 changed files with 25 additions and 1 deletions

View File

@ -1789,7 +1789,8 @@ PDCEX int PDC_set_function_key( const unsigned function,
const int new_key);
PDCEX int PDC_set_preferred_fontface( const wchar_t* fontface);
PDCEX void PDC_set_default_menu_visibility(int visible);
PDCEX void PDC_set_default_menu_visibility( int visible);
PDCEX void PDC_set_color_intensify_enabled( bool enabled);
PDCEX WINDOW *Xinitscr(int, char **);
#ifdef XCURSES

View File

@ -356,8 +356,17 @@ int PDC_choose_a_new_font( void)
/* This should lead to proper handling of bold text in legacy */
/* apps, where "bold" means "high intensity". */
static bool enable_color_intensification = TRUE;
void PDC_set_color_intensify_enabled(bool enabled) {
enable_color_intensification = enabled;
}
static COLORREF intensified_color( COLORREF ival)
{
if ( !enable_color_intensification) {
return ival;
}
int rgb, i;
COLORREF oval = 0;

View File

@ -133,6 +133,7 @@ void App::InitCurses() {
PDC_set_function_key(FUNCTION_KEY_SHUT_DOWN, 4);
PDC_set_default_menu_visibility(0);
PDC_set_title(this->appTitle.c_str());
PDC_set_color_intensify_enabled(false);
#endif
initscr();

View File

@ -46,7 +46,9 @@ using namespace cursespp;
DialogOverlay::DialogOverlay() {
this->SetFrameVisible(true);
this->SetFrameColor(Color::OverlayFrame);
this->SetFocusedFrameColor(Color::OverlayFrame);
this->SetContentColor(Color::OverlayContent);
this->SetFocusedContentColor(Color::OverlayContent);
this->width = this->height = 0;
this->autoDismiss = true;

View File

@ -56,7 +56,9 @@ ToastOverlay::ToastOverlay(const std::string& text, long durationMs) {
this->ticking = false;
this->SetFrameVisible(true);
this->SetFrameColor(Color::OverlayFrame);
this->SetFocusedFrameColor(Color::OverlayFrame);
this->SetContentColor(Color::OverlayContent);
this->SetFocusedContentColor(Color::OverlayContent);
}
ToastOverlay::~ToastOverlay() {

View File

@ -74,6 +74,15 @@ namespace cursespp {
return false;
}
virtual IWindowPtr FocusFirst() override {
auto focus = LayoutBase::FocusFirst();
if (!focus) {
focus = shared_from_this();
this->Focus();
}
return focus;
}
protected:
static void style(TextLabel& label) {
label.SetContentColor(Color::OverlayContent);