static void menu_execute(ObMenuEntry *self, ObMenuFrame *f,
                         ObClient *c, guint state, gpointer data)
{
    if (self->id == ADD_DESKTOP) {
        screen_add_desktop(FALSE);
        menu_frame_hide_all();
    }
    else if (self->id == REMOVE_DESKTOP) {
        screen_remove_desktop(FALSE);
        menu_frame_hide_all();
    }
    else {
        ObClient *t = self->data.normal.data;
        if (t) { /* it's set to NULL if its destroyed */
            gboolean here = state & ShiftMask;

            if (state & ShiftMask) {
                client_close(t);
                self->data.normal.enabled = FALSE;
            }
            else {
                client_activate(t, TRUE, here, TRUE, TRUE, TRUE);

                /* if the window is omnipresent then we need to go to its
                   desktop */
                if (!here && t->desktop == DESKTOP_ALL)
                    screen_set_desktop(self->id, FALSE);
            }
        }
        else
            screen_set_desktop(self->id, TRUE);
    }
}
Beispiel #2
0
static void desk_menu_execute(ObMenuEntry *self, ObMenuFrame *f,
                              ObClient *c, guint state, gpointer data)
{
    ObClient *t = self->data.normal.data;
    if (t) { /* it's set to NULL if its destroyed */
        gboolean here = state & ShiftMask;

        client_activate(t, TRUE, here, TRUE, TRUE, TRUE);
        /* if the window is omnipresent then we need to go to its
           desktop */
        if (!here && t->desktop == DESKTOP_ALL)
            screen_set_desktop(self->id, FALSE);
        if (config_mouse_to_focus)
            WARP_POINTER_TO(t);
    }
    else
        screen_set_desktop(self->id, TRUE);
}
Beispiel #3
0
static gboolean edge_warp_delay_func(gpointer data)
{
    guint d;

    /* only fire every second time. so it's fast the first time, but slower
       after that */
    if (edge_warp_odd) {
        d = screen_find_desktop(screen_desktop, edge_warp_dir, TRUE, FALSE);
        if (d != screen_desktop) {
            if (config_mouse_screenedgewarp) edge_warp_move_ptr();
            screen_set_desktop(d, TRUE);
        }
    }
    edge_warp_odd = !edge_warp_odd;

    return TRUE; /* do repeat ! */
}