@ -236,6 +236,9 @@ get_shell_surface(struct weston_surface *surface);
static struct desktop_shell *
static struct desktop_shell *
shell_surface_get_shell ( struct shell_surface * shsurf ) ;
shell_surface_get_shell ( struct shell_surface * shsurf ) ;
static void
surface_rotate ( struct shell_surface * surface , struct wl_seat * seat ) ;
static bool
static bool
shell_surface_is_top_fullscreen ( struct shell_surface * shsurf )
shell_surface_is_top_fullscreen ( struct shell_surface * shsurf )
{
{
@ -1232,6 +1235,9 @@ busy_cursor_grab_button(struct wl_pointer_grab *base,
if ( shsurf & & button = = BTN_LEFT & & state ) {
if ( shsurf & & button = = BTN_LEFT & & state ) {
activate ( shsurf - > shell , shsurf - > surface , seat ) ;
activate ( shsurf - > shell , shsurf - > surface , seat ) ;
surface_move ( shsurf , seat ) ;
surface_move ( shsurf , seat ) ;
} else if ( shsurf & & button = = BTN_RIGHT & & state ) {
activate ( shsurf - > shell , shsurf - > surface , seat ) ;
surface_rotate ( shsurf , & seat - > seat ) ;
}
}
}
}
@ -2589,23 +2595,12 @@ static const struct wl_pointer_grab_interface rotate_grab_interface = {
} ;
} ;
static void
static void
rotate_binding ( struct wl_seat * seat , uint32_t time , uint32_t button ,
surface_rotate ( struct shell_surface * surface , struct wl_seat * seat )
void * data )
{
{
struct weston_surface * base_surface =
( struct weston_surface * ) seat - > pointer - > focus ;
struct shell_surface * surface ;
struct rotate_grab * rotate ;
struct rotate_grab * rotate ;
float dx , dy ;
float dx , dy ;
float r ;
float r ;
if ( base_surface = = NULL )
return ;
surface = get_shell_surface ( base_surface ) ;
if ( ! surface | | surface - > type = = SHELL_SURFACE_FULLSCREEN )
return ;
rotate = malloc ( sizeof * rotate ) ;
rotate = malloc ( sizeof * rotate ) ;
if ( ! rotate )
if ( ! rotate )
return ;
return ;
@ -2636,6 +2631,24 @@ rotate_binding(struct wl_seat *seat, uint32_t time, uint32_t button,
seat - > pointer , DESKTOP_SHELL_CURSOR_ARROW ) ;
seat - > pointer , DESKTOP_SHELL_CURSOR_ARROW ) ;
}
}
static void
rotate_binding ( struct wl_seat * seat , uint32_t time , uint32_t button ,
void * data )
{
struct weston_surface * base_surface =
( struct weston_surface * ) seat - > pointer - > focus ;
struct shell_surface * surface ;
if ( base_surface = = NULL )
return ;
surface = get_shell_surface ( base_surface ) ;
if ( ! surface | | surface - > type = = SHELL_SURFACE_FULLSCREEN )
return ;
surface_rotate ( surface , seat ) ;
}
static void
static void
lower_fullscreen_layer ( struct desktop_shell * shell )
lower_fullscreen_layer ( struct desktop_shell * shell )
{
{