void stacking_add(struct wm_window *win) { g_assert(screen_support_win != None); if(WINDOW_IS_CLIENT(win)) g_assert(WINDOW_AS_CLIENT(win)->managed); stacking_list = g_list_append(stacking_list, win); stacking_raise(win); }
gboolean stacking_restack_request(struct wm_client *client, struct wm_client *sibling, gint detail) { gboolean ret = FALSE; if(sibling && (client->desktop != sibling->desktop && client->desktop != DESKTOP_ALL && sibling->desktop != DESKTOP_ALL)) { wm_debug("Setting restack sibling to NULL, they are not on the same desktop"); sibling = NULL; } switch (detail) { case Below: wm_debug("Restack request Below for client %s sibling %s", client->title, sibling ? sibling->title : "(all)"); stacking_lower(CLIENT_AS_WINDOW(client)); ret = TRUE; break; case BottomIf: wm_debug("Restack request BottomIf for client %s sibling %s", client->title, sibling ? sibling->title : "(all)"); if(stacking_occludes(client, sibling)) { stacking_lower(CLIENT_AS_WINDOW(client)); ret = TRUE; } break; case Above: wm_debug("Restack request Above for client %s sibling %s", client->title, sibling ? sibling->title : "(all)"); stacking_raise(CLIENT_AS_WINDOW(client)); ret = TRUE; break; case TopIf: wm_debug("Restack request TopIf for client %s sibling %s", client->title, sibling ? sibling->title : "(all)"); if(stacking_occluded(client, sibling)) { stacking_raise(CLIENT_AS_WINDOW(client)); ret = TRUE; } break; case Opposite: wm_debug("Restack request Opposite for client %s sibling %s", client->title, sibling ? sibling->title : "(all)"); if(stacking_occluded(client, sibling)) { stacking_raise(CLIENT_AS_WINDOW(client)); ret = TRUE; } else if(stacking_occludes(client, sibling)) { stacking_lower(CLIENT_AS_WINDOW(client)); ret = TRUE; } break; } return ret; }
static gboolean popup_show_timeout(gpointer data) { ObPopup *self = data; XMapWindow(obt_display, self->bg); stacking_raise(INTERNAL_AS_WINDOW(self)); self->mapped = TRUE; self->delay_mapped = FALSE; return FALSE; /* don't repeat */ }
/* Always return FALSE because its not interactive */ static gboolean run_func(ObActionsData *data, gpointer options) { if (data->client) { // syslog(LOG_INFO,"raise before move"); actions_client_move(data, TRUE); // syslog(LOG_INFO,"raise before raise"); stacking_raise(CLIENT_AS_WINDOW(data->client)); // syslog(LOG_INFO,"raise after raise"); actions_client_move(data, FALSE); } return FALSE; }