wlmaker
Loading...
Searching...
No Matches
content.h
Go to the documentation of this file.
1/* ========================================================================= */
20#ifndef __WLMTK_CONTENT_H__
21#define __WLMTK_CONTENT_H__
22
23#include <stdbool.h>
24#include <stddef.h>
25#include <stdint.h>
26
27struct _wlmtk_content_t;
33
34#include "container.h" // IWYU pragma: keep
35#include "element.h"
36#include "libbase/libbase.h"
37#include "popup.h"
38#include "surface.h"
39#include "util.h"
40#include "window.h" // IWYU pragma: keep
41
43
46;
48
49;
51
52#ifdef __cplusplus
53extern "C" {
54#endif // __cplusplus
55
72 uint32_t (*request_maximized)(wlmtk_content_t *content_ptr,
73 bool maximized);
74
90 uint32_t (*request_fullscreen)(wlmtk_content_t *content_ptr,
91 bool fullscreen);
92
108 uint32_t (*request_size)(wlmtk_content_t *content_ptr,
109 int width,
110 int height);
111
119 void (*request_close)(wlmtk_content_t *content_ptr);
120
133 void (*set_activated)(wlmtk_content_t *content_ptr, bool activated);
134};
135
142
145
147 // TODO(kaeser@gubbe.ch): Re-think whether this better be part of window?
148 // To consider: positioning relative to window's content *is* desirable.
150
155
157 // TODO(kaeser@gubbe.ch): Should not be stored here & this way.
159
165
170
172 bs_dllist_t popups;
174 bs_dllist_node_t dlnode;
175};
176
186 wlmtk_content_t *content_ptr,
187 wlmtk_element_t *element_ptr);
188
195 wlmtk_content_t *content_ptr);
196
204 wlmtk_content_t *content_ptr,
205 wlmtk_element_t *element_ptr);
206
216 wlmtk_content_t *content_ptr,
217 const wlmtk_content_vmt_t *content_vmt_ptr);
218
220static inline uint32_t wlmtk_content_request_maximized(
221 wlmtk_content_t *content_ptr,
222 bool maximized) {
223 // Guard clause, if method isn't implemented.
224 if (NULL == content_ptr->vmt.request_maximized) return 0;
225 return content_ptr->vmt.request_maximized(content_ptr, maximized);
226}
227
229static inline uint32_t wlmtk_content_request_fullscreen(
230 wlmtk_content_t *content_ptr,
231 bool fullscreen) {
232 // Guard clause, if method isn't implemented.
233 if (NULL == content_ptr->vmt.request_fullscreen) return 0;
234 return content_ptr->vmt.request_fullscreen(content_ptr, fullscreen);
235}
236
238static inline uint32_t wlmtk_content_request_size(
239 wlmtk_content_t *content_ptr,
240 int width,
241 int height) {
242 // Guard clause, if method isn't implemented.
243 if (NULL == content_ptr->vmt.request_size) return 0;
244 return content_ptr->vmt.request_size(content_ptr, width, height);
245}
246
248static inline void wlmtk_content_request_close(wlmtk_content_t *content_ptr) {
249 // Guard clause, if method isn't implemented.
250 if (NULL == content_ptr->vmt.request_close) return;
251 return content_ptr->vmt.request_close(content_ptr);
252}
253
256 wlmtk_content_t *content_ptr,
257 bool activated) {
258 // Guard clause, if method isn't implemented.
259 if (NULL == content_ptr->vmt.set_activated) return;
260 content_ptr->vmt.set_activated(content_ptr, activated);
261}
262
263
273 wlmtk_content_t *content_ptr,
274 wlmtk_window_t *window_ptr);
275
278 wlmtk_content_t *content_ptr,
279 int *width_ptr,
280 int *height_ptr);
281
284 wlmtk_content_t *content_ptr,
285 int width,
286 int height,
287 uint32_t serial);
288
291
299 wlmtk_content_t *content_ptr,
300 wlmtk_content_t *popup_content_ptr);
301
311 wlmtk_content_t *content_ptr,
312 wlmtk_content_t *popup_content_ptr);
313
321 wlmtk_content_t *content_ptr,
322 wlmtk_popup_t *popup_ptr);
323
333 wlmtk_content_t *content_ptr,
334 wlmtk_popup_t *popup_ptr);
335
338 wlmtk_content_t *content_ptr);
339
341extern const bs_test_case_t wlmtk_content_test_cases[];
342
362
365 wlmtk_fake_surface_t *fake_surface_ptr);
369void wlmtk_fake_content_commit(wlmtk_fake_content_t *fake_content_ptr);
370
371#ifdef __cplusplus
372} // extern "C"
373#endif // __cplusplus
374
375#endif /* __WLMTK_CONTENT_H__ */
376/* == End of content.h ===================================================== */
wlmtk_element_t * wlmtk_content_element(wlmtk_content_t *content_ptr)
Definition content.c:204
bool wlmtk_content_init(wlmtk_content_t *content_ptr, wlmtk_element_t *element_ptr)
Definition content.c:56
static void wlmtk_content_request_close(wlmtk_content_t *content_ptr)
Definition content.h:248
wlmtk_content_t * wlmtk_content_get_parent_content(wlmtk_content_t *content_ptr)
Definition content.c:265
void wlmtk_fake_content_commit(wlmtk_fake_content_t *fake_content_ptr)
Definition content.c:364
void wlmtk_content_set_window(wlmtk_content_t *content_ptr, wlmtk_window_t *window_ptr)
Definition content.c:196
void wlmtk_content_commit(wlmtk_content_t *content_ptr, int width, int height, uint32_t serial)
Definition content.c:182
void wlmtk_content_set_element(wlmtk_content_t *content_ptr, wlmtk_element_t *element_ptr)
Definition content.c:113
static uint32_t wlmtk_content_request_fullscreen(wlmtk_content_t *content_ptr, bool fullscreen)
Definition content.h:229
void wlmtk_content_remove_wlmtk_popup(wlmtk_content_t *content_ptr, wlmtk_popup_t *popup_ptr)
Definition content.c:255
const bs_test_case_t wlmtk_content_test_cases[]
Definition content.c:416
static uint32_t wlmtk_content_request_maximized(wlmtk_content_t *content_ptr, bool maximized)
Definition content.h:220
wlmtk_content_vmt_t wlmtk_content_extend(wlmtk_content_t *content_ptr, const wlmtk_content_vmt_t *content_vmt_ptr)
Definition content.c:141
void wlmtk_content_get_size(wlmtk_content_t *content_ptr, int *width_ptr, int *height_ptr)
Definition content.c:172
void wlmtk_content_add_wlmtk_popup(wlmtk_content_t *content_ptr, wlmtk_popup_t *popup_ptr)
Definition content.c:245
static void wlmtk_content_set_activated(wlmtk_content_t *content_ptr, bool activated)
Definition content.h:255
static uint32_t wlmtk_content_request_size(wlmtk_content_t *content_ptr, int width, int height)
Definition content.h:238
void wlmtk_content_fini(wlmtk_content_t *content_ptr)
Definition content.c:87
void wlmtk_content_add_popup(wlmtk_content_t *content_ptr, wlmtk_content_t *popup_content_ptr)
Definition content.c:210
wlmtk_fake_content_t * wlmtk_fake_content_create(wlmtk_fake_surface_t *fake_surface_ptr)
Definition content.c:337
void wlmtk_fake_content_destroy(wlmtk_fake_content_t *fake_content_ptr)
Definition content.c:357
void wlmtk_content_remove_popup(wlmtk_content_t *content_ptr, wlmtk_content_t *popup_content_ptr)
Definition content.c:228
Definition container.h:57
Definition content.h:137
wlmtk_container_t popup_container
Definition content.h:149
wlmtk_content_vmt_t vmt
Definition content.h:141
int committed_width
Definition content.h:167
wlmtk_element_t * element_ptr
Definition content.h:152
wlmtk_element_vmt_t orig_super_element_vmt
Definition content.h:144
wlmtk_container_t super_container
Definition content.h:139
bs_dllist_t popups
Definition content.h:172
int committed_height
Definition content.h:169
bs_dllist_node_t dlnode
Definition content.h:174
wlmtk_content_t * parent_content_ptr
Definition content.h:164
wlmtk_window_t * window_ptr
Definition content.h:154
wlmtk_util_client_t client
Definition content.h:158
Definition content.h:57
uint32_t(* request_maximized)(wlmtk_content_t *content_ptr, bool maximized)
Definition content.h:72
void(* request_close)(wlmtk_content_t *content_ptr)
Definition content.h:119
uint32_t(* request_fullscreen)(wlmtk_content_t *content_ptr, bool fullscreen)
Definition content.h:90
void(* set_activated)(wlmtk_content_t *content_ptr, bool activated)
Definition content.h:133
uint32_t(* request_size)(wlmtk_content_t *content_ptr, int width, int height)
Definition content.h:108
Definition element.h:183
Definition element.h:69
Definition content.h:344
int requested_width
Definition content.h:356
wlmtk_fake_surface_t * fake_surface_ptr
Definition content.h:348
bool activated
Definition content.h:360
int requested_height
Definition content.h:358
bool request_close_called
Definition content.h:351
wlmtk_content_t content
Definition content.h:346
uint32_t serial
Definition content.h:354
Definition surface.h:156
Definition popup.h:43
Definition surface.h:47
Definition window.c:82
Definition util.h:35