File: group.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 (140 lines) | stat: -rw-r--r-- 4,203 bytes parent folder | download
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
 * ion/ioncore/group.h
 *
 * Copyright (c) Tuomo Valkonen 1999-2009. 
 *
 * See the included file LICENSE for details.
 */

#ifndef ION_IONCORE_GROUP_H
#define ION_IONCORE_GROUP_H

#include <libextl/extl.h>
#include <ioncore/common.h>
#include <ioncore/region.h>
#include <ioncore/screen.h>
#include <ioncore/manage.h>
#include <ioncore/rectangle.h>
#include <ioncore/pholder.h>
#include <ioncore/stacking.h>


INTRSTRUCT(WGroupAttachParams);

typedef WRegionSimpleCreateFn WGroupMkFrameFn;


DECLSTRUCT(WGroupAttachParams){
    uint level_set:1;
    uint szplcy_set:1;
    uint geom_set:1;
    uint geom_weak_set:1;
    uint switchto_set:1;
    
    uint switchto:1;
    uint bottom:1;
    uint whatever:1;
    
    int geom_weak;
    WRectangle geom;
    
    uint level;
    WSizePolicy szplcy;
    WRegion *stack_above;
};

#define GROUPATTACHPARAMS_INIT \
    {0, 0, 0, 0, 0,  0, 0, 0,  0, {0, 0, 0, 0},  0, 0, NULL}


DECLCLASS(WGroup){
    WRegion reg;
    WStacking *managed_list;
    WStacking *managed_stdisp;
    WStacking *current_managed;
    WStacking *bottom;
    Window dummywin;
    WGroupPHolder *phs;
};


extern bool group_init(WGroup *grp, WWindow *parent, const WFitParams *fp);
extern WGroup *create_group(WWindow *parent, const WFitParams *fp);
extern void group_deinit(WGroup *grp);

extern WRegion *group_load(WWindow *par, const WFitParams *fp, 
                           ExtlTab tab);
extern void group_do_load(WGroup *ws, ExtlTab tab);

extern WRegion* group_current(WGroup *group);

DYNFUN WStacking *group_do_add_managed(WGroup *ws, WRegion *reg, 
                                       int level, WSizePolicy szplcy);
extern WStacking *group_do_add_managed_default(WGroup *ws, WRegion *reg, 
                                               int level, WSizePolicy szplcy);

extern void groupattachparams_get(WGroupAttachParams *par, ExtlTab tab, 
                                  const char *sub);

extern WRegion *group_do_attach(WGroup *ws, 
                                WGroupAttachParams *param,
                                WRegionAttachData *data);
extern bool group_do_attach_final(WGroup *ws, 
                                  WRegion *reg,
                                  const WGroupAttachParams *param);

extern WRegion *group_attach(WGroup *ws, WRegion *reg, ExtlTab param);
extern WRegion *group_attach_new(WGroup *ws, ExtlTab param);

extern void group_manage_stdisp(WGroup *ws, WRegion *stdisp, 
                                const WMPlexSTDispInfo *di);

extern void group_managed_remove(WGroup *ws, WRegion *reg);

extern void group_managed_notify(WGroup *ws, WRegion *reg, WRegionNotify how);

extern WRegion *group_bottom(WGroup *ws);
extern bool group_set_bottom(WGroup *ws, WRegion *reg);
DYNFUN void group_bottom_set(WGroup *grp);

extern bool group_rescue_clientwins(WGroup *ws, WRescueInfo *info);

extern bool group_rqclose(WGroup *ws);
extern bool group_rqclose_relocate(WGroup *ws);

extern bool group_managed_rqorder(WGroup *grp, WRegion *sub, 
                                  WRegionOrder order);

extern WStacking *group_find_stacking(WGroup *ws, WRegion *r);
extern WStacking *group_find_to_focus(WGroup *ws, WStacking *to_try);

extern WRegion *region_groupleader_of(WRegion *reg);
/*extern WRegion *region_group_of(WRegion *reg);*/


typedef WStackingFilter WGroupIterFilter;
typedef WStackingIterTmp WGroupIterTmp;

extern void group_iter_init(WGroupIterTmp *tmp, WGroup *ws);
extern WRegion *group_iter(WGroupIterTmp *tmp);
extern WStacking *group_iter_nodes(WGroupIterTmp *tmp);

extern WStacking *group_get_stacking(WGroup *ws);
extern WStacking **group_get_stackingp(WGroup *ws);

#define FOR_ALL_MANAGED_BY_GROUP(WS, VAR, TMP) \
    for(group_iter_init(&(TMP), WS),           \
         VAR=group_iter(&(TMP));               \
        VAR!=NULL;                             \
        VAR=group_iter(&(TMP)))

#define FOR_ALL_NODES_IN_GROUP(WS, VAR, TMP) \
    for(group_iter_init(&(TMP), WS),         \
         VAR=group_iter_nodes(&(TMP));       \
        VAR!=NULL;                           \
        VAR=group_iter_nodes(&(TMP)))

extern WGroupIterTmp group_iter_default_tmp;


#endif /* ION_IONCORE_GROUP_H */