From 287986b28a9290cc46ef585bfcc47782ea55cc70 Mon Sep 17 00:00:00 2001 From: James Bursa Date: Mon, 22 Sep 2003 21:55:08 +0000 Subject: [project @ 2003-09-22 21:55:08 by bursa] Experimental textarea editing code. svn path=/import/netsurf/; revision=309 --- riscos/font.c | 4 ++-- riscos/gui.c | 30 +++++++++++------------------- riscos/htmlredraw.c | 13 ------------- 3 files changed, 13 insertions(+), 34 deletions(-) (limited to 'riscos') diff --git a/riscos/font.c b/riscos/font.c index 493a7e507..6eaabcc97 100644 --- a/riscos/font.c +++ b/riscos/font.c @@ -61,7 +61,7 @@ unsigned long font_width(struct font_data *font, const char * text, unsigned int 0, &width, 0, 0); if (error != 0) { fprintf(stderr, "%s\n", error->errmess); - die("font_scan_string failed"); + die("font_width: font_scan_string failed"); } return width / 800; @@ -212,7 +212,7 @@ char * font_split(struct font_data *data, const char * text, unsigned int length used_width, 0, 0); if (error != 0) { fprintf(stderr, "%s\n", error->errmess); - die("font_scan_string failed"); + die("font_split: font_scan_string failed"); } *used_width = browser_x_units(*used_width / 400); diff --git a/riscos/gui.c b/riscos/gui.c index 8c9a83b30..f67ebb338 100644 --- a/riscos/gui.c +++ b/riscos/gui.c @@ -1368,8 +1368,13 @@ void ro_gui_keypress(wimp_key* key) { gui_window* g; - if (key == NULL) - return; + if (key->i == -1 && key->c < 256) { + g = ro_lookup_gui_from_w(key->w); + if (g) { + browser_window_key_press(g->data.browser.bw, (char) key->c); + return; + } + } g = ro_lookup_gui_toolbar_from_w(key->w); if (g != NULL) @@ -1686,20 +1691,10 @@ void gui_gadget_combo(struct browser_window* bw, struct gui_gadget* g, unsigned ro_gui_create_menu(combo_menu, pointer.pos.x - 64, pointer.pos.y, bw->window); } -void gui_edit_textarea(struct browser_window* bw, struct gui_gadget* g) +void gui_window_place_caret(gui_window *g, int x, int y, int height) { - FILE* file; - - xosfile_create_dir(".WWW", 77); - xosfile_create_dir(".WWW.NetSurf", 77); - file = fopen("/WWW/NetSurf/TextArea", "w"); - if (g->data.textarea.text != 0) - fprintf(file, "%s", g->data.textarea.text); - fprintf(stderr, "closing file.\n"); - fclose(file); - - xosfile_set_type(".WWW.NetSurf.TextArea", osfile_TYPE_TEXT); - xos_cli("filer_run .WWW.NetSurf.TextArea"); + wimp_set_caret_position(g->data.browser.window, -1, + x * 2, -(y + height) * 2, height * 2, -1); } void ro_msg_datasave(wimp_message* block) @@ -1799,10 +1794,7 @@ void ro_msg_dataload(wimp_message* block) if (click_boxes[i].box->gadget->type == GADGET_TEXTAREA && data->file_type == 0xFFF) { /* load the text in! */ - if (click_boxes[i].box->gadget->data.textarea.text != 0) - xfree(click_boxes[i].box->gadget->data.textarea.text); - click_boxes[i].box->gadget->data.textarea.text = load(data->file_name); - gui_redraw_gadget(bw, click_boxes[i].box->gadget); + /* TODO */ } } } diff --git a/riscos/htmlredraw.c b/riscos/htmlredraw.c index 4d83422c6..43455a0c5 100644 --- a/riscos/htmlredraw.c +++ b/riscos/htmlredraw.c @@ -137,19 +137,6 @@ void html_redraw_box(struct content *content, struct box * box, icon.extent.y1 = -gadget_subtract_y + y; switch (box->gadget->type) { - case GADGET_TEXTAREA: - icon.flags = wimp_ICON_TEXT | wimp_ICON_BORDER | - wimp_ICON_VCENTRED | wimp_ICON_FILLED | - wimp_ICON_INDIRECTED | - (wimp_COLOUR_BLACK << wimp_ICON_FG_COLOUR_SHIFT) | - (wimp_COLOUR_WHITE << wimp_ICON_BG_COLOUR_SHIFT); - icon.data.indirected_text.text = box->gadget->data.textarea.text; - icon.data.indirected_text.size = strlen(box->gadget->data.textarea.text); - icon.data.indirected_text.validation = validation_textarea; - LOG(("writing GADGET TEXTAREA")); - wimp_plot_icon(&icon); - break; - case GADGET_TEXTBOX: colourtrans_set_font_colours(box->font->handle, current_background_color << 8, box->style->color << 8, 14, 0, 0, 0); -- cgit v1.2.3