vicon drag tweaks, proxy drag fix, vicon mouseover, binfolder around sort fix, draw_r...
[goodguy/history.git] / cinelerra-5.1 / guicast / bcwindowbase.C
index db085e863655fc86bc011af6c875b825a7d9d43a..421a26fe7663e2470aba2f52d0265fb15c0560e4 100644 (file)
@@ -182,10 +182,12 @@ BC_WindowBase::~BC_WindowBase()
                for( int i=sizeof(xfont)/sizeof(xfont[0]); --i>=0; )
                        XFreeFont(display, this->*xfont[i]);
 
-// past bug in X caused XRenderExtensionInfo to be damaged
-// if this is done here. left to be done in XCloseDisplay by Xlib.
-// works in more modern systems, and needed for leak testing.
-#if defined(HAVE_XFT) && defined(VALGRIND)
+#ifdef HAVE_XFT
+// prevents a bug when Xft closes with unrefd fonts
+               FcPattern *defaults = FcPatternCreate();
+               FcPatternAddInteger(defaults, "maxunreffonts", 0);
+               XftDefaultSet(display, defaults);
+
                static void *BC_WindowBase::*xft_font[] = {
                         &BC_WindowBase::smallfont_xft,
                         &BC_WindowBase::mediumfont_xft,
@@ -995,7 +997,7 @@ locking_message = event->xclient.message_type;
                        done = 1;
                        } else
                        { // We currently use X marshalling for xatom events, we can switch to something else later
-                               recieve_custom_xatoms((xatom_event *)ptr);
+                               receive_custom_xatoms((xatom_event *)ptr);
                }
                break;
 
@@ -1336,6 +1338,7 @@ locking_message = event->xclient.message_type;
                break;
 
        case LeaveNotify:
+               if( event->xcrossing.mode != NotifyNormal ) break;
                if( cursor_entered && event->xcrossing.window == win ) {
                        cursor_entered = 0;
                }
@@ -1344,6 +1347,7 @@ locking_message = event->xclient.message_type;
                break;
 
        case EnterNotify:
+               if( event->xcrossing.mode != NotifyNormal ) break;
                if( !cursor_entered && event->xcrossing.window == win ) {
                        if( !event->xcrossing.focus && get_resources()->grab_input_focus ) {
                                XSetInputFocus(display, win, RevertToParent, CurrentTime);
@@ -1976,7 +1980,7 @@ int BC_WindowBase::arm_repeat(int64_t duration)
 }
 #endif
 
-int BC_WindowBase::recieve_custom_xatoms(xatom_event *event)
+int BC_WindowBase::receive_custom_xatoms(xatom_event *event)
 {
        return 0;
 }