File: group.h

package info (click to toggle)
notion 4.0.2%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,676 kB
  • sloc: ansic: 47,508; sh: 2,096; makefile: 603; perl: 270
file content (137 lines) | stat: -rw-r--r-- 4,091 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
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
/*
 * ion/ioncore/group.h
 *
 * Copyright (c) Tuomo Valkonen 1999-2007.
 *
 * 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>
#include <ioncore/framedpholder.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;

    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, NULL}


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


extern bool group_init(WGroup *grp, WWindow *parent, const WFitParams *fp, const char *name);
extern WGroup *create_group(WWindow *parent, const WFitParams *fp, const char *name);
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 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);

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);*/

extern ExtlTab group_get_configuration(WGroup *ws);


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 */