[go: up one dir, main page]

File: selection.h

package info (click to toggle)
foot 1.6.4-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,492 kB
  • sloc: ansic: 21,242; python: 170; sh: 26; makefile: 7
file content (81 lines) | stat: -rw-r--r-- 3,090 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
#pragma once

#include <stdbool.h>
#include <wayland-client.h>

#include "terminal.h"

extern const struct wl_data_device_listener data_device_listener;
extern const struct zwp_primary_selection_device_v1_listener primary_selection_device_listener;

bool selection_enabled(const struct terminal *term, struct seat *seat);
void selection_start(
    struct terminal *term, int col, int row, enum selection_kind kind);
void selection_update(struct terminal *term, int col, int row);
void selection_finalize(
    struct seat *seat, struct terminal *term, uint32_t serial);
void selection_dirty_cells(struct terminal *term);
void selection_cancel(struct terminal *term);
void selection_extend( struct seat *seat, struct terminal *term,
                       int col, int row, uint32_t serial);

bool selection_on_rows(const struct terminal *term, int start, int end);

void selection_view_up(struct terminal *term, int new_view);
void selection_view_down(struct terminal *term, int new_view);

void selection_mark_word(
    struct seat *seat, struct terminal *term, int col, int row,
    bool spaces_only, uint32_t serial);
void selection_mark_row(
    struct seat *seat, struct terminal *term, int row, uint32_t serial);

void selection_clipboard_unset(struct seat *seat);
void selection_primary_unset(struct seat *seat);

bool selection_clipboard_has_data(const struct seat *seat);
bool selection_primary_has_data(const struct seat *seat);

char *selection_to_text(const struct terminal *term);
void selection_to_clipboard(
    struct seat *seat, struct terminal *term, uint32_t serial);
void selection_from_clipboard(
    struct seat *seat, struct terminal *term, uint32_t serial);
void selection_to_primary(
    struct seat *seat, struct terminal *term, uint32_t serial);
void selection_from_primary(struct seat *seat, struct terminal *term);

/* Copy text *to* primary/clipboard */
bool text_to_clipboard(
    struct seat *seat, struct terminal *term, char *text, uint32_t serial);
bool text_to_primary(
    struct seat *seat, struct terminal *term, char *text, uint32_t serial);

/*
 * Copy text *from* primary/clipboard
 *
 * Note that these are asynchronous; they *will* return
 * immediately. The 'cb' callback will be called 0..n times with
 * clipboard data. When done (or on error), the 'done' callback is
 * called.
 *
 * As such, keep this in mind:
 *  - The 'user' context must not be stack allocated
 * - Don't expect clipboard data to have been received when these
 *   functions return (it will *never* have been received at this
 *   point).
 */
void text_from_clipboard(
    struct seat *seat, struct terminal *term,
    void (*cb)(char *data, size_t size, void *user),
    void (*done)(void *user), void *user);

void text_from_primary(
    struct seat *seat, struct terminal *term,
    void (*cb)(char *data, size_t size, void *user),
    void (*dont)(void *user), void *user);

void selection_start_scroll_timer(
    struct terminal *term, int interval_ns,
    enum selection_scroll_direction direction, int col);
void selection_stop_scroll_timer(struct terminal *term);