X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fguicast%2Fbcwindowbase.C;h=f5759dd853d31b196d46040781b359f57c766ad8;hb=a21c48689604ad7142a02d6f0a8dd4776e8d4422;hp=c380792efce09c9ffd16e6c9933af95033620ffe;hpb=c5feedfabe3ee87dfae9a254c9b67c566ec15d2e;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/guicast/bcwindowbase.C b/cinelerra-5.1/guicast/bcwindowbase.C index c380792e..f5759dd8 100644 --- a/cinelerra-5.1/guicast/bcwindowbase.C +++ b/cinelerra-5.1/guicast/bcwindowbase.C @@ -997,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; @@ -1233,25 +1233,25 @@ locking_message = event->xclient.message_type; case XK_KP_Subtract: key_pressed = KPMINUS; break; case XK_KP_Multiply: key_pressed = KPSTAR; break; case XK_KP_Divide: key_pressed = KPSLASH; break; - case XK_KP_1: key_pressed = '1'; break; + case XK_KP_1: case XK_KP_End: key_pressed = KP1; break; - case XK_KP_2: key_pressed = '2'; break; + case XK_KP_2: case XK_KP_Down: key_pressed = KP2; break; - case XK_KP_3: key_pressed = '3'; break; + case XK_KP_3: case XK_KP_Page_Down: key_pressed = KP3; break; - case XK_KP_4: key_pressed = '4'; break; + case XK_KP_4: case XK_KP_Left: key_pressed = KP4; break; - case XK_KP_5: key_pressed = '5'; break; + case XK_KP_5: case XK_KP_Begin: key_pressed = KP5; break; - case XK_KP_6: key_pressed = '6'; break; + case XK_KP_6: case XK_KP_Right: key_pressed = KP6; break; - case XK_KP_7: key_pressed = '7'; break; + case XK_KP_7: case XK_KP_Home: key_pressed = KP7; break; - case XK_KP_8: key_pressed = '8'; break; + case XK_KP_8: case XK_KP_Up: key_pressed = KP8; break; - case XK_KP_9: key_pressed = '9'; break; + case XK_KP_9: case XK_KP_Page_Up: key_pressed = KP9; break; - case XK_KP_0: key_pressed = '0'; break; + case XK_KP_0: case XK_KP_Insert: key_pressed = KPINS; break; case XK_KP_Decimal: case XK_KP_Delete: key_pressed = KPDEL; break; @@ -1338,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; } @@ -1346,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); @@ -1978,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; } @@ -3465,6 +3467,38 @@ BC_WindowBase::get_xinerama_info(int screen) return 0; } +void BC_WindowBase::get_fullscreen_geometry(int &wx, int &wy, int &ww, int &wh) +{ + XineramaScreenInfo *info = top_level->get_xinerama_info(-1); + if( info ) { + wx = info->x_org; wy = info->y_org; + ww = info->width; wh = info->height; + } + else { + wx = get_screen_x(0, -1); + wy = get_screen_y(0, -1); + int scr_w0 = get_screen_w(0, 0); + int root_w = get_root_w(0); + int root_h = get_root_h(0); + if( root_w > scr_w0 ) { // multi-headed + if( wx >= scr_w0 ) { + // assumes right side is the big one + ww = root_w - scr_w0; + wh = root_h; + } + else { + // use same aspect ratio to compute left height + ww = scr_w0; + wh = (w*root_h) / (root_w-scr_w0); + } + } + else { + ww = root_w; + wh = root_h; + } + } +} + int BC_WindowBase::get_screen_x(int lock_display, int screen) { int result = -1;