Avoid some asserts with WBFO.

Wed, 06 Jun 2012 01:55:02 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 06 Jun 2012 01:55:02 +0000
changeset 33022
87c277f64c4e
parent 33021
3dc4b2cdba7f
child 33023
35de4c169b1a

Avoid some asserts with WBFO.

pidgin/gtkwebview.c file | annotate | diff | comparison | revisions
--- a/pidgin/gtkwebview.c	Tue Jun 05 23:59:36 2012 +0000
+++ b/pidgin/gtkwebview.c	Wed Jun 06 01:55:02 2012 +0000
@@ -315,8 +315,8 @@
 {
 	GtkWebViewPriv *priv = GTK_WEBVIEW_GET_PRIVATE(webview);
 	WebKitDOMDocument *dom;
-	WebKitDOMDOMWindow *win = NULL;
-	WebKitDOMDOMSelection *sel;
+	WebKitDOMDOMWindow *win;
+	WebKitDOMDOMSelection *sel = NULL;
 	WebKitDOMRange *range = NULL;
 
 	dom = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(webview));
@@ -324,7 +324,8 @@
 	if (priv->edit.wbfo) {
 		win = webkit_dom_document_get_default_view(dom);
 		sel = webkit_dom_dom_window_get_selection(win);
-		range = webkit_dom_dom_selection_get_range_at(sel, 0, NULL);
+		if (webkit_dom_dom_selection_get_range_count(sel) > 0)
+			range = webkit_dom_dom_selection_get_range_at(sel, 0, NULL);
 		webkit_web_view_select_all(WEBKIT_WEB_VIEW(webview));
 	}
 
@@ -333,9 +334,12 @@
 	priv->edit.block_changed = FALSE;
 
 	if (priv->edit.wbfo) {
-		sel = webkit_dom_dom_window_get_selection(win);
-		webkit_dom_dom_selection_remove_all_ranges(sel);
-		webkit_dom_dom_selection_add_range(sel, range);
+		if (range) {
+			webkit_dom_dom_selection_remove_all_ranges(sel);
+			webkit_dom_dom_selection_add_range(sel, range);
+		} else {
+			webkit_dom_dom_selection_collapse_to_end(sel, NULL);
+		}
 	}
 }
 

mercurial