Solving wrong behavior of the MyExpander's Enable button.

This commit is contained in:
Hombrenatureh.510
2015-03-12 00:00:02 +01:00
parent c071095c56
commit d12cb196fe
2 changed files with 11 additions and 26 deletions

View File

@@ -380,7 +380,7 @@ void MyExpander::init() {
}
MyExpander::MyExpander(bool useEnabled, Gtk::Widget* titleWidget) :
enabled(false), inconsistent(false),
enabled(false), inconsistent(false), flushEvent(false),
child(NULL), headerWidget(NULL), statusImage(NULL),
label(NULL), useEnabled(useEnabled)
{
@@ -425,7 +425,7 @@ MyExpander::MyExpander(bool useEnabled, Gtk::Widget* titleWidget) :
}
MyExpander::MyExpander(bool useEnabled, Glib::ustring titleLabel) :
enabled(false), inconsistent(false),
enabled(false), inconsistent(false), flushEvent(false),
child(NULL), headerWidget(NULL), statusImage(NULL),
label(NULL), useEnabled(useEnabled)
{
@@ -597,30 +597,12 @@ void MyExpander::add (Gtk::Container& widget) {
widget.show();
}
/*
bool MyExpander::on_expose_event(GdkEventExpose* event) {
Gdk::Color c;
Cairo::RefPtr<Cairo::Context> cr = get_window()->create_cairo_context();
int w = get_width ();
int h = get_height ();
Gtk::StateType state = !is_sensitive() ? Gtk::STATE_INSENSITIVE : Gtk::STATE_PRELIGHT;
Glib::RefPtr<Gtk::Style> style = get_style();
// clear bg
cr->set_line_width (0.);
c = style->get_bg (state);
cr->set_source_rgb(c.get_red_p(), c.get_green_p(), c.get_blue_p());
// draw the box's background
cr->rectangle (0., 0., double(w), double(h));
cr->fill();
return true;
}
*/
bool MyExpander::on_toggle(GdkEventButton* event) {
if (flushEvent) {
flushEvent = false;
return false;
}
if (!child || event->button != 1)
return false;
@@ -646,7 +628,7 @@ MyExpander::type_signal_enabled_toggled MyExpander::signal_enabled_toggled() {
// internal use ; when the user clicks on the toggle button, it calls this method that will emit an enabled_change event
bool MyExpander::on_enabled_change(GdkEventButton* event) {
if (useEnabled && event->button == 1) {
if (event->button == 1) {
if (enabled) {
enabled = false;
statusImage->set(disabledPBuf);
@@ -656,6 +638,7 @@ bool MyExpander::on_enabled_change(GdkEventButton* event) {
statusImage->set(enabledPBuf);
}
message.emit();
flushEvent = true;
}
return false;
}

View File

@@ -98,6 +98,7 @@ private:
bool inconsistent; /// True if the enabled button is inconsistent
Gtk::EventBox *titleEvBox; /// EventBox of the title, to get a connector from it
Gtk::HBox *headerHBox;
bool flushEvent; /// Flag to control the weird event mechanism of Gtk (please prove me wrong!)
/// Triggered on opened/closed event
bool on_toggle(GdkEventButton* event);
@@ -173,6 +174,7 @@ public:
bool get_expanded();
/// Add a Gtk::Container for the content of the expander
/// Warning: do not manually Show/Hide the widget, because this parameter is handled by the click on the Expander's title
void add (Gtk::Container& widget);
};