File: stacking.h

package info (click to toggle)
notion 3%2B2012042300-1
  • links: PTS, VCS
  • area: non-free
  • in suites: wheezy
  • size: 4,724 kB
  • sloc: ansic: 45,614; makefile: 544; sh: 409; perl: 113
file content (107 lines) | stat: -rw-r--r-- 3,106 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
/*
 * ion/ioncore/stacking.h
 *
 * Copyright (c) Tuomo Valkonen 1999-2009.
 *
 * See the included file LICENSE for details.
 */

#ifndef ION_IONCORE_STACKING_H
#define ION_IONCORE_STACKING_H

#include "common.h"
#include "region.h"
#include "sizepolicy.h"


#define STACKING_LEVEL_BOTTOM 0
#define STACKING_LEVEL_NORMAL 1
#define STACKING_LEVEL_ON_TOP 2
#define STACKING_LEVEL_MODAL1 1024

#define STACKING_IS_HIDDEN(ST) ((ST)->hidden)
#define STACKING_IS_PSEUDOMODAL(ST) ((ST)->pseudomodal)


DECLSTRUCT(WStacking){
    WRegion *reg;
    WStacking *next, *prev;
    WStacking *above;
    uint level;
    WSizePolicy szplcy;
    WStacking *mgr_next, *mgr_prev;
    
    /* flags */
    uint to_unweave:2;
    uint hidden:1;
    uint pseudomodal:1;
    
    /* WMPlex stuff */
    WLListNode *lnode;
};


typedef bool WStackingFilter(WStacking *st, void *data);
typedef WStacking *WStackingIterator(void *data);


DECLSTRUCT(WStackingIterTmp){
    WStacking *st;
    WStackingFilter *filt;
    void *filt_data;
};


WStacking **window_get_stackingp(WWindow *wwin);
WStacking *window_get_stacking(WWindow *wwin);


WStacking *create_stacking();

void stacking_free(WStacking *st);

/* Returns the topmost node with 'above' pointing to st. */
WStacking *stacking_unstack(WWindow *par, WStacking *st);

void stacking_iter_init(WStackingIterTmp *tmp,
                        WStacking *st,
                        WStackingFilter *filt,
                        void *filt_data);
WRegion *stacking_iter(WStackingIterTmp *tmp);
WStacking *stacking_iter_nodes(WStackingIterTmp *tmp);

void stacking_iter_mgr_init(WStackingIterTmp *tmp,
                            WStacking *st,
                            WStackingFilter *filt,
                            void *filt_data);
WRegion *stacking_iter_mgr(WStackingIterTmp *tmp);
WStacking *stacking_iter_mgr_nodes(WStackingIterTmp *tmp);

void stacking_weave(WStacking **stacking, WStacking **np, bool below);
WStacking *stacking_unweave(WStacking **stacking, 
                            WStackingFilter *filt, void *filt_data);

void stacking_restack(WStacking **stacking, WStacking *st, Window fb_win,
                      WStackingFilter *filt, void *filt_data, bool lower);

WStacking *stacking_find_to_focus(WStacking *stacking, WStacking *to_try,
                                  WStackingFilter *include_filt, 
                                  WStackingFilter *approve_filt, 
                                  void *filt_data);
WStacking *stacking_find_to_focus_mapped(WStacking *stacking, 
                                         WStacking *to_try,
                                         WRegion *mgr);

uint stacking_min_level(WStacking *stacking, 
                        WStackingFilter *include_filt, 
                        void *filt_data);

uint stacking_min_level_mapped(WStacking *stacking);

bool stacking_must_focus(WStacking *stacking, WStacking *st);

WStacking *ioncore_find_stacking(WRegion *reg);
void stacking_unassoc(WStacking *stacking);
bool stacking_assoc(WStacking *stacking, WRegion *reg);

#endif /* ION_IONCORE_STACKING_H */