Wed, 06 Jun 2012 01:55:02 +0000
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); + } } }