void uiSubMouseHandle( int Button,int X,int Y,int RX,int RY ) { static int mplSubMoved = 0; static int msButton = 0; uiPlaybarShow( Y ); switch( Button ) { case wsRRMouseButton: gtkShow( ivShowPopUpMenu,NULL ); break; case wsPMMouseButton: gtkShow( ivHidePopUpMenu,NULL ); uiShowMenu( RX,RY ); msButton=wsPMMouseButton; break; case wsRMMouseButton: uiHideMenu( RX,RY,1 ); msButton=0; break; /* --- */ case wsPLMouseButton: gtkShow( ivHidePopUpMenu,NULL ); sx=X; sy=Y; msButton=wsPLMouseButton; mplSubMoved=0; break; case wsMoveMouse: switch ( msButton ) { case wsPLMouseButton: mplSubMoved=1; if ( !guiApp.subWindow.isFullScreen ) { wsMoveWindow( &guiApp.subWindow,True,RX - sx,RY - sy ); guiApp.sub.x = guiApp.subWindow.X; guiApp.sub.y = guiApp.subWindow.Y; // NOTE TO MYSELF: dragging the title bar goes unnoticed? } break; case wsPMMouseButton: uiMenuMouseHandle( RX,RY ); break; default: uiPlaybarShow( Y ); break; } break; case wsRLMouseButton: if ( ( !mplSubMoved )&&( guiApp.subWindow.isFullScreen ) ) { if( subVisible++%2 ) wsRaiseWindowTop( wsDisplay,guiApp.mainWindow.WindowID ); else wsRaiseWindowTop( wsDisplay,guiApp.subWindow.WindowID ); } msButton=0; mplSubMoved=0; break; } }
/** * @brief Switch window fullscreen state. * * Switch normal window to fullscreen and fullscreen window to normal. * * @param win pointer to a ws window structure */ void wsFullScreen(wsTWindow *win) { if (win->isFullScreen) { if (vo_fs_type & vo_wm_FULLSCREEN) /* window manager supports EWMH */ vo_x11_ewmh_fullscreen(win->WindowID, _NET_WM_STATE_REMOVE); else { win->X = win->OldX; win->Y = win->OldY; win->Width = win->OldWidth; win->Height = win->OldHeight; } win->isFullScreen = False; } else { if (vo_fs_type & vo_wm_FULLSCREEN) /* window manager supports EWMH */ vo_x11_ewmh_fullscreen(win->WindowID, _NET_WM_STATE_ADD); else { win->OldX = win->X; win->OldY = win->Y; win->OldWidth = win->Width; win->OldHeight = win->Height; } win->isFullScreen = True; wsUpdateXineramaInfo(win); } /* unknown window manager and obsolete option -fsmode used */ if (vo_wm_type == 0 && !(vo_fsmode & 16)) { XUnmapWindow(wsDisplay, win->WindowID); // required for MWM XWithdrawWindow(wsDisplay, win->WindowID, wsScreen); } /* restore window if window manager doesn't support EWMH */ if (!(vo_fs_type & vo_wm_FULLSCREEN)) { wsWindowDecoration(win, win->Decorations && !win->isFullScreen); vo_x11_sizehint(win->X, win->Y, win->Width, win->Height, 0); wsSetLayer(wsDisplay, win->WindowID, win->isFullScreen); XMoveResizeWindow(wsDisplay, win->WindowID, win->X, win->Y, win->Width, win->Height); } /* some window managers lose ontop after fullscreen */ if (!win->isFullScreen & vo_ontop) wsSetLayer(wsDisplay, win->WindowID, vo_ontop); wsRaiseWindowTop(wsDisplay, win->WindowID); XFlush(wsDisplay); }