示例#1
0
文件: stacking.c 项目: sylware/lboxwm
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);
}
示例#2
0
文件: stacking.c 项目: sylware/lboxwm
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;
}
示例#3
0
文件: popup.c 项目: deters/openbox
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 */
}
示例#4
0
文件: raise.c 项目: godvmxi/openbox
/* 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;
}