summaryrefslogtreecommitdiff
path: root/desktop/browser.h
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/browser.h')
-rw-r--r--desktop/browser.h48
1 files changed, 17 insertions, 31 deletions
diff --git a/desktop/browser.h b/desktop/browser.h
index cad8bf706..39f2253bf 100644
--- a/desktop/browser.h
+++ b/desktop/browser.h
@@ -40,14 +40,6 @@ struct history;
struct selection;
struct fetch_multipart_data;
-typedef bool (*browser_caret_callback)(struct browser_window *bw, uint32_t key,
- void *p1, void *p2);
-typedef void (*browser_move_callback)(struct browser_window *bw,
- void *p1, void *p2);
-typedef bool (*browser_paste_callback)(struct browser_window *bw,
- const char *utf8, unsigned utf8_len, bool last,
- void *p1, void *p2);
-
typedef enum {
DRAGGING_NONE,
@@ -60,6 +52,13 @@ typedef enum {
DRAGGING_OTHER
} browser_drag_type;
+typedef enum {
+ BW_EDITOR_NONE = 0, /**< No selection, no editing */
+ BW_EDITOR_CAN_COPY = (1 << 0), /**< Have selection */
+ BW_EDITOR_CAN_CUT = (1 << 1), /**< Selection not read-only */
+ BW_EDITOR_CAN_PASTE = (1 << 2) /**< Can paste, input */
+} browser_editor_flags;
+
extern bool browser_reformat_pending;
/** flags to browser window go */
@@ -206,15 +205,9 @@ bool browser_window_stop_available(struct browser_window *bw);
/* In desktop/textinput.c */
void browser_window_place_caret(struct browser_window *bw,
- int x, int y, int height,
- browser_caret_callback caret_cb,
- browser_paste_callback paste_cb,
- browser_move_callback move_cb,
- void *p1, void *p2);
-void browser_window_remove_caret(struct browser_window *bw);
+ int x, int y, int height);
+void browser_window_remove_caret(struct browser_window *bw, bool only_hide);
bool browser_window_key_press(struct browser_window *bw, uint32_t key);
-bool browser_window_paste_text(struct browser_window *bw, const char *utf8,
- unsigned utf8_len, bool last);
/**
@@ -327,29 +320,22 @@ browser_drag_type browser_window_get_drag_type(struct browser_window *bw);
struct browser_window * browser_window_get_root(struct browser_window *bw);
/**
- * Check whether browser window contains a selection
- *
- * \param bw The browser window
- * \return true if browser window contains a selection
- */
-bool browser_window_has_selection(struct browser_window *bw);
-
-/**
- * Set pointer to current selection. Clears any existing selection.
+ * Check whether browser window can accept a cut/copy/paste, or has a selection
+ * that could be saved.
*
* \param bw The browser window
- * \param s The new selection
+ * \return flags indicating editor flags
*/
-void browser_window_set_selection(struct browser_window *bw,
- struct selection *s);
+browser_editor_flags browser_window_get_editor_flags(struct browser_window *bw);
/**
- * Get the current selection context from a root browser window
+ * Get the current selection from a root browser window, ownership passed to
+ * caller, who must free() it.
*
* \param bw The browser window
- * \return the selection context, or NULL
+ * \return the selected text string, or NULL
*/
-struct selection *browser_window_get_selection(struct browser_window *bw);
+char * browser_window_get_selection(struct browser_window *bw);
/**