summaryrefslogtreecommitdiff
path: root/riscos/textselection.c
blob: 6b0c71888a14ceed8a5959189efe5765dbd74f0d (plain)
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
/*
 * This file is part of NetSurf, http://netsurf.sourceforge.net/
 * Licensed under the GNU General Public License,
 *                http://www.opensource.org/licenses/gpl-license
 * Copyright 2003 Phil Mellor <monkeyson@users.sourceforge.net>
 */

#include <string.h>
#include "oslib/wimp.h"
#include "netsurf/riscos/gui.h"
#include "netsurf/utils/log.h"
#include "netsurf/utils/utils.h"


void ro_gui_start_selection(wimp_pointer *pointer, wimp_window_state *state,
		gui_window *g)
{
	wimp_drag drag;

	gui_current_drag_type = GUI_DRAG_SELECTION;
	current_gui = g;

	drag.type = wimp_DRAG_USER_POINT;
	drag.initial.x0 = pointer->pos.x;
	drag.initial.y0 = pointer->pos.y;
	drag.initial.x1 = pointer->pos.x;
	drag.initial.y1 = pointer->pos.y;
	drag.bbox.x0 = state->visible.x0;
	drag.bbox.y0 = state->visible.y0;
	drag.bbox.x1 = state->visible.x1;
	drag.bbox.y1 = state->visible.y1;
	wimp_drag_box(&drag);
}


void ro_gui_selection_drag_end(wimp_dragged *drag)
{
    struct browser_action msg;
    int final_x0, final_y0;
    wimp_window_state state;

    state.w = current_gui->window;
    wimp_get_window_state(&state);

    final_x0 = window_x_units(drag->final.x0, &state) / 2;
    final_y0 = window_y_units(drag->final.y0, &state) / 2;

    msg.data.mouse.x = final_x0;
    msg.data.mouse.y = final_y0;
    msg.type = act_ALTER_SELECTION;
    browser_window_action(current_gui->data.browser.bw, &msg);

    if (box_position_eq(&(current_gui->data.browser.bw->current_content->data.html.text_selection.start),
                        &(current_gui->data.browser.bw->current_content->data.html.text_selection.end)))
    {
      msg.type = act_CLEAR_SELECTION;
      browser_window_action(current_gui->data.browser.bw, &msg);
    }
    current_gui->drag_status = drag_NONE;
    current_gui->data.browser.bw->current_content->data.html.text_selection.altering = alter_UNKNOWN;
}


void ro_gui_copy_selection(gui_window* g)
{
  if (g->type == GUI_BROWSER_WINDOW)
  {
//    if (g->data.browser.bw->text_selection->selected == 1)
//    {
//    }
  }
}