mirror of
https://github.com/brl/mutter.git
synced 2024-09-22 15:35:54 -04:00
0058271aaa
We can't easily use a metacity layer to hide windows as that means we loose our original stacking position. (Metacity's stack positions are only valid within a single layer) We now have a "guard window" per screen that is a fullscreen override redirect that is lowered to the bottom of the stack. Hidden windows now remain in their original layer so the stacking position remains valid, but all hidden windows get XRestacked under the guard window. A new compositor hook is also added to inform it when a window becomes hidden/unhidded, this lets us map/unmap the corresponding actor. missing files in preview commit (TODO: rebase -i and squash this later)
93 lines
3.6 KiB
C
93 lines
3.6 KiB
C
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
/*
|
|
* Copyright (C) 2008 Iain Holmes
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*/
|
|
|
|
#ifndef META_COMPOSITOR_PRIVATE_H
|
|
#define META_COMPOSITOR_PRIVATE_H
|
|
|
|
#include "compositor.h"
|
|
|
|
struct _MetaCompositor
|
|
{
|
|
void (* destroy) (MetaCompositor *compositor);
|
|
|
|
void (*manage_screen) (MetaCompositor *compositor,
|
|
MetaScreen *screen);
|
|
void (*unmanage_screen) (MetaCompositor *compositor,
|
|
MetaScreen *screen);
|
|
void (*add_window) (MetaCompositor *compositor,
|
|
MetaWindow *window,
|
|
Window xwindow,
|
|
XWindowAttributes *attrs);
|
|
void (*remove_window) (MetaCompositor *compositor,
|
|
Window xwindow);
|
|
void (*set_updates) (MetaCompositor *compositor,
|
|
MetaWindow *window,
|
|
gboolean update);
|
|
void (*process_event) (MetaCompositor *compositor,
|
|
XEvent *event,
|
|
MetaWindow *window);
|
|
Pixmap (*get_window_pixmap) (MetaCompositor *compositor,
|
|
MetaWindow *window);
|
|
void (*set_active_window) (MetaCompositor *compositor,
|
|
MetaScreen *screen,
|
|
MetaWindow *window);
|
|
/* local additions */
|
|
void (*destroy_window) (MetaCompositor *compositor,
|
|
MetaWindow *window);
|
|
|
|
void (*minimize_window) (MetaCompositor *compositor,
|
|
MetaWindow *window);
|
|
|
|
void (*maximize_window) (MetaCompositor *compositor,
|
|
MetaWindow *window,
|
|
int x,
|
|
int y,
|
|
int width,
|
|
int height);
|
|
|
|
void (*unmaximize_window) (MetaCompositor *compositor,
|
|
MetaWindow *window,
|
|
int x,
|
|
int y,
|
|
int width,
|
|
int height);
|
|
|
|
void (*update_workspace_geometry) (MetaCompositor *compositor,
|
|
MetaWorkspace *workspace);
|
|
|
|
void (*switch_workspace) (MetaCompositor *compositor,
|
|
MetaScreen *screen,
|
|
MetaWorkspace *from,
|
|
MetaWorkspace *to,
|
|
MetaMotionDirection direction);
|
|
|
|
void (*sync_stack) (MetaCompositor *compositor,
|
|
MetaScreen *screen,
|
|
GList *stack);
|
|
|
|
void (*set_window_hidden) (MetaCompositor *compositor,
|
|
MetaScreen *screen,
|
|
MetaWindow *window,
|
|
gboolean hidden);
|
|
};
|
|
|
|
#endif
|