drag+drop group highlight changes, fileref tweaks + warn, tweak awdw for ref/edl...
[goodguy/cinelerra.git] / cinelerra-5.1 / guicast / bcwindowbase.C
index f94ee16512ee7652c3339114b89cfbe2c2735f21..e861238e388e177a041b093407513421cb1ea8c9 100644 (file)
@@ -1261,35 +1261,8 @@ if( debug && event->type != ClientMessage ) {
                case XK_F10:            key_pressed = KEY_F10;  break;
                case XK_F11:            key_pressed = KEY_F11;  break;
                case XK_F12:            key_pressed = KEY_F12;  break;
-
+// activates remote
                case XK_Menu:           key_pressed = KPMENU;   break;  /* menu */
-// remote control
-// above       case XK_KP_Enter:       key_pressed = KPENTER;  break;  /* check */
-               case XF86XK_MenuKB:     key_pressed = KPMENU;   break;  /* menu */
-// intercepted case XF86XK_PowerDown: key_pressed = KPPOWER;   break;  /* Power */
-               case XF86XK_Launch1:    key_pressed = KPTV;     break;  /* TV */
-               case XF86XK_Launch2:    key_pressed = KPDVD;    break;  /* DVD */
-// intercepted case XF86XK_WWW:        key_pressed = KPWWEB;   break;  /* WEB */
-               case XF86XK_Launch3:    key_pressed = KPBOOK;   break;  /* book */
-               case XF86XK_Launch4:    key_pressed = KPHAND;   break;  /* hand */
-               case XF86XK_Reply:      key_pressed = KPTMR;    break;  /* timer */
-               case SunXK_Front:       key_pressed = KPMAXW;   break;  /* max */
-// above       case XK_Left:           key_pressed = LEFT;     break;  /* left */
-// above       case XK_Right:          key_pressed = RIGHT;    break;  /* right */
-// above       case XK_Down:           key_pressed = DOWN;     break;  /* down */
-// above       case XK_Up:             key_pressed = UP;       break;  /* up */
-// above       case XK_SPACE:          key_pressed = KPSPACE;  break;  /* ok */
-// intercepted case XF86XK_AudioRaiseVolume: key_pressed = KPVOLU;     break;  /* VOL + */
-// intercepted case XF86XK_AudioMute: key_pressed = KPMUTE;    break;  /* MUTE */
-// intercepted case XF86XK_AudioLowerVolume: key_pressed = KPVOLD;     break;  /* VOL - */
-               case XF86XK_ScrollUp:   key_pressed = KPCHUP;   break;  /* CH + */
-               case XF86XK_ScrollDown: key_pressed = KPCHDN;   break;  /* CH - */
-               case XF86XK_AudioRecord: key_pressed = KPRECD;  break;  /* ( o) red */
-               case XF86XK_Forward:    key_pressed = KPPLAY;   break;  /* ( >) */
-               case XK_Redo:           key_pressed = KPFWRD;   break;  /* (>>) */
-               case XF86XK_Back:       key_pressed = KPBACK;   break;  /* (<<) */
-               case XK_Cancel:         key_pressed = KPSTOP;   break;  /* ([]) */
-               case XK_Pause:          key_pressed = KPAUSE;   break;  /* ('') */
 
                default:
                        key_pressed = keysym & 0xff;
@@ -2437,6 +2410,8 @@ void BC_WindowBase::init_glyphs()
 //  Not a fix, but much better than nothing.
        static int inited = 0;
        if( inited ) return;
+       XGrabServer(display);
+       XSync(display, 0);
        inited = 1;
        int cur_font = current_font;
 // locale encodings, needed glyphs to be preloaded
@@ -2449,6 +2424,7 @@ void BC_WindowBase::init_glyphs()
                draw_text(5,5, text, 0);
        }
        set_font(cur_font);
+       XUngrabServer(display);
 }
 
 void BC_WindowBase::init_im()
@@ -4238,6 +4214,8 @@ void BC_WindowBase::set_force_tooltip(int v)
 
 int BC_WindowBase::raise_window(int do_flush)
 {
+       if( hidden ) return 1;
+       if( wait_viewable(500) ) return 1;
        XRaiseWindow(top_level->display, win);
        if(do_flush) XFlush(top_level->display);
        return 0;
@@ -4654,3 +4632,15 @@ void BC_WindowBase::focus()
                XSetInputFocus(top_level->display, top_level->win, RevertToParent, CurrentTime);
 }
 
+int BC_WindowBase::wait_viewable(int ms)
+{
+       Timer timer;
+       XWindowAttributes xwa;
+       do {
+               XGetWindowAttributes(top_level->display, top_level->win, &xwa);
+               if( xwa.map_state == IsViewable ) return 1;
+               usleep(10000);
+       } while( timer.get_difference() < ms );
+       return 0;
+}
+