1 /* { dg-do assemble { target ia64-*-* } } */
2 typedef int gint;
3 typedef gint gboolean;
4 typedef unsigned int guint;
5 typedef struct _MetaRectangle MetaRectangle;
6 struct _MetaRectangle
7 {
8 int x;
9 int y;
10 };
11 typedef struct _MetaDisplay MetaDisplay;
12 typedef struct _MetaFrame MetaFrame;
13 typedef struct _MetaWindow MetaWindow;
14 typedef struct
15 {
16 int win_gravity;
17 }
18 XSizeHints;
19 typedef enum
20 {
21 META_DEBUG_FOCUS = 1 << 0, META_DEBUG_WORKAREA = 1 << 1, META_DEBUG_STACK =
22 1 << 6, META_DEBUG_WINDOW_OPS = 1 << 7, META_DEBUG_GEOMETRY =
23 1 << 20, META_DEBUG_EDGE_RESISTANCE = 1 << 21
24 }
25 MetaStackLayer;
26 struct _MetaWindow
27 {
28 MetaDisplay *display;
29 MetaFrame *frame;
30 guint user_has_move_resized:1;
31 MetaRectangle user_rect;
32 XSizeHints size_hints;
33 };
34 void meta_window_get_position (MetaWindow * window, int *x, int *y);
35 typedef struct _MetaFrameGeometry MetaFrameGeometry;
36 struct _MetaFrameGeometry
37 {
38 };
39 struct _MetaFrame
40 {
41 MetaWindow *window;
42 MetaRectangle rect;
43 int child_x;
44 int child_y;
45 };
46 typedef enum
47 {
48 META_IS_CONFIGURE_REQUEST = 1 << 0, META_DO_GRAVITY_ADJUST =
49 1 << 3, META_IS_RESIZE_ACTION = 1 << 4
50 }
51 MetaMoveResizeFlags;
adjust_for_gravity(MetaWindow * window,MetaFrameGeometry * fgeom,gboolean coords_assume_border,int gravity,MetaRectangle * rect)52 adjust_for_gravity (MetaWindow * window, MetaFrameGeometry * fgeom,
53 gboolean coords_assume_border, int gravity,
54 MetaRectangle * rect)
55 {
56 int ref_x, ref_y;
57 int child_x, child_y;
58 int frame_width, frame_height;
59 switch (gravity)
60 {
61 case 1:
62 ref_x = rect->x;
63 }
64 switch (gravity)
65 {
66 case 1:
67 rect->y = ref_y + child_y;
68 case 2:
69 rect->x = ref_x - frame_width / 2 + child_x;
70 break;
71 case 3:
72 case 5:
73 case 6:
74 rect->x = ref_x - frame_width + child_x;
75 }
76 }
meta_window_move_resize_internal(MetaWindow * window,MetaMoveResizeFlags flags,int resize_gravity,int root_x_nw,int root_y_nw,int w,int h)77 meta_window_move_resize_internal (MetaWindow * window,
78 MetaMoveResizeFlags flags,
79 int resize_gravity, int root_x_nw,
80 int root_y_nw, int w, int h)
81 {
82 unsigned int mask;
83 MetaFrameGeometry fgeom;
84 gboolean need_resize_client = (0);
85 gboolean is_configure_request;
86 MetaRectangle new_rect;
87 MetaRectangle old_rect;
88 {
89 adjust_for_gravity (window, window->frame ? &fgeom : ((void *) 0),
90 is_configure_request, window->size_hints.win_gravity,
91 &new_rect);
92 }
93 meta_window_constrain (window, window->frame ? &fgeom : ((void *) 0), flags,
94 resize_gravity, &old_rect, &new_rect);
95 if (mask != 0)
96 {
97 {
98 meta_topic_real (META_DEBUG_GEOMETRY,
99 need_resize_client ? "true" : "false");
100 }
101 }
102 {
103 window->user_has_move_resized = (!(0));
104 meta_window_get_position (window, &window->user_rect.x,
105 &window->user_rect.y);
106 }
107 }
108 void
meta_window_get_position(MetaWindow * window,int * x,int * y)109 meta_window_get_position (MetaWindow * window, int *x, int *y)
110 {
111 if (window->frame)
112 {
113 *x = window->frame->rect.x + window->frame->child_x;
114 *y = window->frame->rect.y + window->frame->child_y;
115 }
116 }
117