Am Donnerstag, den 21.06.2012, 12:25 +0200 schrieb Rob Kendrick <[email protected]>:

http://www.netsurf-browser.org/developers/StyleGuide.pdf

B.

Attached is a patch that hopefully has no more style glitches.
If there is more, please let me know which style rule is broken.

Greets,
Ole

Index: textarea.c
===================================================================
--- textarea.c	(Revision 13970)
+++ textarea.c	(Arbeitskopie)
@@ -121,6 +121,7 @@
 static bool textarea_set_caret_xy(struct text_area *ta, int x, int y);
 static bool textarea_scroll_visible(struct text_area *ta);
 static bool textarea_select(struct text_area *ta, int c_start, int c_end);
+static bool textarea_select_fragment (struct text_area *ta);
 static void textarea_normalise_text(struct text_area *ta,
 		unsigned int b_start, unsigned int b_len);
 
@@ -1335,6 +1336,12 @@
 					ta->vis_height);
 		}
 	}
+	else if( mouse & BROWSER_MOUSE_DOUBLE_CLICK ){
+		if ( !(ta->flags & TEXTAREA_READONLY) ){
+			textarea_set_caret_xy( ta, x, y );
+			return textarea_select_fragment( ta );
+		}
+	}
 	else if (mouse & BROWSER_MOUSE_DRAG_1) {
 		ta->drag_start_char = textarea_get_xy_offset(ta, x, y);
 		if (!(ta->flags & TEXTAREA_READONLY))
@@ -1406,6 +1413,47 @@
 
 
 /**
+ * Selects a text fragment, relative to current caret position.
+ *
+ * \param ta	Text area
+ * \return 		true on success false otherwise
+ */
+static bool textarea_select_fragment(struct text_area * ta)
+{
+	int c_pos, start_pos, end_pos;
+	static const char * sep = "/.\r\n";
+
+	c_pos = textarea_get_caret(ta);
+	if( c_pos < 0 ){
+		return(false);
+	}
+
+	start_pos = c_pos;
+	while (start_pos > 0 ){
+		if(strchr(sep, ta->text[start_pos]) != NULL){
+			start_pos++;
+			break;
+		}
+		start_pos--;
+	}
+
+	end_pos = c_pos;
+	while (end_pos < (int)ta->text_len){
+		if(strchr(sep, ta->text[end_pos]) != NULL){
+			break;
+		}
+		end_pos++;
+	}
+
+	if(start_pos < end_pos){
+		textarea_select(ta, start_pos, end_pos);
+		return(true);
+	}
+
+	return(false);
+}
+
+/**
  * Normalises any line endings within the text, replacing CRLF or CR with
  * LF as necessary. If the textarea is single line, then all linebreaks are
  * converted into spaces.

Reply via email to