A redesign of popover was needed: it can no longer query the application state directly due to current state being its own actor, so instead the popover gets a dedicated copy of the relevant state. I'm not entirely happy with the extra complexity of having an extra actor just for 1 string, but at least the duplication between C and Rust and mutual calls have been reduced.
66 lines
2.7 KiB
C
66 lines
2.7 KiB
C
#ifndef __LAYOUT_H
|
|
#define __LAYOUT_H
|
|
|
|
#include <inttypes.h>
|
|
#include <glib.h>
|
|
#include "eek/eek-element.h"
|
|
#include "eek/eek-gtk-keyboard.h"
|
|
#include "eek/eek-renderer.h"
|
|
#include "eek/eek-types.h"
|
|
#include "src/main.h"
|
|
#include "src/popover.h"
|
|
#include "src/submission.h"
|
|
#include "virtual-keyboard-unstable-v1-client-protocol.h"
|
|
#include "text-input-unstable-v3-client-protocol.h"
|
|
|
|
enum squeek_arrangement_kind {
|
|
ARRANGEMENT_KIND_BASE = 0,
|
|
ARRANGEMENT_KIND_WIDE = 1,
|
|
};
|
|
|
|
struct squeek_layout_state {
|
|
enum squeek_arrangement_kind arrangement;
|
|
enum zwp_text_input_v3_content_purpose purpose;
|
|
enum zwp_text_input_v3_content_hint hint;
|
|
char *layout_name;
|
|
char *overlay_name;
|
|
};
|
|
|
|
struct squeek_layout;
|
|
|
|
|
|
struct transformation squeek_layout_calculate_transformation(
|
|
const struct squeek_layout *layout,
|
|
double allocation_width, double allocation_size);
|
|
|
|
struct squeek_layout *squeek_load_layout(const char *name, uint32_t type, uint32_t variant_type, const char *overlay_name);
|
|
enum squeek_arrangement_kind squeek_layout_get_kind(const struct squeek_layout *);
|
|
uint32_t squeek_layout_get_purpose(const struct squeek_layout *);
|
|
void squeek_layout_free(struct squeek_layout*);
|
|
|
|
void squeek_layout_release(struct squeek_layout *layout,
|
|
struct submission *submission,
|
|
struct transformation widget_to_layout,
|
|
uint32_t timestamp,
|
|
struct squeek_popover *popover,
|
|
struct squeek_state_manager *state,
|
|
EekGtkKeyboard *ui_keyboard);
|
|
void squeek_layout_release_all_only(struct squeek_layout *layout,
|
|
struct submission *submission,
|
|
uint32_t timestamp);
|
|
void squeek_layout_depress(struct squeek_layout *layout,
|
|
struct submission *submission,
|
|
double x_widget, double y_widget,
|
|
struct transformation widget_to_layout,
|
|
uint32_t timestamp, EekGtkKeyboard *ui_keyboard);
|
|
void squeek_layout_drag(struct squeek_layout *layout,
|
|
struct submission *submission,
|
|
double x_widget, double y_widget,
|
|
struct transformation widget_to_layout,
|
|
uint32_t timestamp, struct squeek_popover *popover,
|
|
struct squeek_state_manager *state,
|
|
EekGtkKeyboard *ui_keyboard);
|
|
void squeek_layout_draw_all_changed(struct squeek_layout *layout, EekRenderer* renderer, cairo_t *cr, struct submission *submission);
|
|
void squeek_draw_layout_base_view(struct squeek_layout *layout, EekRenderer* renderer, cairo_t *cr);
|
|
#endif
|