Issue 2034: Workaround for GTK2 bugs on OS X causing slow curve widgets.
This commit is contained in:
@@ -66,7 +66,13 @@ void ImageArea::on_realize()
|
|||||||
{
|
{
|
||||||
Gtk::DrawingArea::on_realize();
|
Gtk::DrawingArea::on_realize();
|
||||||
|
|
||||||
|
#if defined (__APPLE__)
|
||||||
|
// Workaround: disabling POINTER_MOTION_HINT_MASK as for gtk 2.24.22 the get_pointer() function is buggy for quartz and modifier mask is not updated correctly.
|
||||||
|
// This workaround should be removed when bug is fixed in GTK2 or when migrating to GTK3
|
||||||
|
add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::SCROLL_MASK);
|
||||||
|
#else
|
||||||
add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::SCROLL_MASK);
|
add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::SCROLL_MASK);
|
||||||
|
#endif
|
||||||
|
|
||||||
Cairo::FontOptions cfo;
|
Cairo::FontOptions cfo;
|
||||||
cfo.set_antialias (Cairo::ANTIALIAS_SUBPIXEL);
|
cfo.set_antialias (Cairo::ANTIALIAS_SUBPIXEL);
|
||||||
|
@@ -38,7 +38,13 @@ MyCurve::MyCurve () : listener(NULL) {
|
|||||||
curveIsDirty = true;
|
curveIsDirty = true;
|
||||||
|
|
||||||
set_extension_events(Gdk::EXTENSION_EVENTS_ALL);
|
set_extension_events(Gdk::EXTENSION_EVENTS_ALL);
|
||||||
|
#if defined (__APPLE__)
|
||||||
|
// Workaround: disabling POINTER_MOTION_HINT_MASK as for gtk 2.24.22 the get_pointer() function is buggy for quartz and modifier mask is not updated correctly.
|
||||||
|
// This workaround should be removed when bug is fixed in GTK2 or when migrating to GTK3
|
||||||
|
add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::BUTTON1_MOTION_MASK);
|
||||||
|
#else
|
||||||
add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::BUTTON1_MOTION_MASK);
|
add_events(Gdk::EXPOSURE_MASK | Gdk::POINTER_MOTION_MASK | Gdk::POINTER_MOTION_HINT_MASK | Gdk::ENTER_NOTIFY_MASK | Gdk::LEAVE_NOTIFY_MASK | Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_RELEASE_MASK | Gdk::BUTTON1_MOTION_MASK);
|
||||||
|
#endif
|
||||||
signal_style_changed().connect( sigc::mem_fun(*this, &MyCurve::styleChanged) );
|
signal_style_changed().connect( sigc::mem_fun(*this, &MyCurve::styleChanged) );
|
||||||
|
|
||||||
mcih = new MyCurveIdleHelper;
|
mcih = new MyCurveIdleHelper;
|
||||||
|
Reference in New Issue
Block a user