X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbctextbox.C;h=4eef5347d7a300369861f6e41e199911ec6bad21;hb=d85ee0843fbbd79a0a7d2ffa0aac57968e24f6d7;hp=52aa85d3e28f54c77cdb0abc6763f6e73e24ccb5;hpb=af2d680fc71d16363f7f7fb7e602cb0c30015ee5;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bctextbox.C b/cinelerra-5.1/guicast/bctextbox.C index 52aa85d3..4eef5347 100644 --- a/cinelerra-5.1/guicast/bctextbox.C +++ b/cinelerra-5.1/guicast/bctextbox.C @@ -750,7 +750,8 @@ int BC_TextBox::focus_out_event() int BC_TextBox::cursor_enter_event() { - if(top_level->event_win == win && enabled) + if( top_level->event_win == win && enabled && + !(top_level->get_resources()->textbox_focus_policy & CLICK_ACTIVATE) ) { tooltip_done = 0; if( !active ) { @@ -772,10 +773,12 @@ int BC_TextBox::cursor_leave_event() if(highlighted) { highlighted = 0; - draw_border(); hide_tooltip(); + draw_border(); + flash(1); } - if( !suggestions_popup ) + if( !suggestions_popup && + !(top_level->get_resources()->textbox_focus_policy & CLICK_DEACTIVATE) ) deactivate(); return 0; } @@ -894,10 +897,13 @@ int BC_TextBox::button_press_event() return 1; } else - if(active && suggestions_popup && (!yscroll || !yscroll->is_event_win())) - { - if( suggestions_popup->button_press_event() ) - return suggestions_popup->handle_event(); + if( active ) { + if( suggestions_popup && (!yscroll || !yscroll->is_event_win())) { + if( suggestions_popup->button_press_event() ) + return suggestions_popup->handle_event(); + } + else if( (top_level->get_resources()->textbox_focus_policy & CLICK_DEACTIVATE) ) + deactivate(); } return 0; @@ -990,6 +996,7 @@ int BC_TextBox::deactivate() { if( active ) { active = 0; + text_selected = word_selected = line_selected = 0; top_level->set_active_subwindow(0); top_level->unset_repeat(top_level->get_resources()->blink_rate); } @@ -2522,22 +2529,14 @@ void BC_PopupTextBox::reposition_window(int x, int y) BC_TumbleTextBoxText::BC_TumbleTextBoxText(BC_TumbleTextBox *popup, - int64_t default_value, - int64_t min, - int64_t max, - int x, - int y) + int64_t default_value, int x, int y) : BC_TextBox(x, y, popup->text_w, 1, default_value) { this->popup = popup; } BC_TumbleTextBoxText::BC_TumbleTextBoxText(BC_TumbleTextBox *popup, - float default_value, - float min, - float max, - int x, - int y) + float default_value, int x, int y) : BC_TextBox(x, y, popup->text_w, 1, default_value) { this->popup = popup; @@ -2693,20 +2692,12 @@ int BC_TumbleTextBox::create_objects() if(use_float) { parent_window->add_subwindow(textbox = new BC_TumbleTextBoxText(this, - default_value_f, - min_f, - max_f, - x, - y)); + default_value_f, x, y)); textbox->set_precision(precision); } else parent_window->add_subwindow(textbox = new BC_TumbleTextBoxText(this, - default_value, - min, - max, - x, - y)); + default_value, x, y)); x += textbox->get_w(); @@ -2781,17 +2772,23 @@ int BC_TumbleTextBox::get_h() return textbox->get_h(); } -void BC_TumbleTextBox::disable() +void BC_TumbleTextBox::disable(int hide_text) { + if( hide_text && !textbox->is_hidden() ) + textbox->hide_window(0); + if( !tumbler->is_hidden() ) + tumbler->hide_window(0); if( !get_enabled() ) return; - tumbler->hide_window(0); return textbox->disable(); } void BC_TumbleTextBox::enable() { + if( textbox->is_hidden() ) + textbox->show_window(0); + if( tumbler->is_hidden() ) + tumbler->show_window(0); if( get_enabled() ) return; - tumbler->show_window(0); return textbox->enable(); }