static void webkit_hit_test_result_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec) { WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object); WebKitHitTestResultPrivate* priv = web_hit_test_result->priv; switch(propertyID) { case PROP_CONTEXT: g_value_set_flags(value, priv->context); break; case PROP_LINK_URI: g_value_set_string(value, priv->linkURI); break; case PROP_IMAGE_URI: g_value_set_string(value, priv->imageURI); break; case PROP_MEDIA_URI: g_value_set_string(value, priv->mediaURI); break; case PROP_INNER_NODE: g_value_set_object(value, priv->innerNode.get()); break; case PROP_X: g_value_set_int(value, priv->position.x()); break; case PROP_Y: g_value_set_int(value, priv->position.y()); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); } }
static void webkit_hit_test_result_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec) { WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object); WebKitHitTestResultPrivate* priv = web_hit_test_result->priv; switch(propertyID) { case PROP_CONTEXT: priv->context = g_value_get_flags(value); break; case PROP_LINK_URI: g_free (priv->linkURI); priv->linkURI = g_value_dup_string(value); break; case PROP_IMAGE_URI: g_free (priv->imageURI); priv->imageURI = g_value_dup_string(value); break; case PROP_MEDIA_URI: g_free (priv->mediaURI); priv->mediaURI = g_value_dup_string(value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec); } }
WebKitHitTestResult* kit(const WebCore::HitTestResult& result) { guint context = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT; GOwnPtr<char> linkURI(0); GOwnPtr<char> imageURI(0); GOwnPtr<char> mediaURI(0); if (!result.absoluteLinkURL().isEmpty()) { context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK; linkURI.set(g_strdup(result.absoluteLinkURL().string().utf8().data())); } if (!result.absoluteImageURL().isEmpty()) { context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE; imageURI.set(g_strdup(result.absoluteImageURL().string().utf8().data())); } if (!result.absoluteMediaURL().isEmpty()) { context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA; mediaURI.set(g_strdup(result.absoluteMediaURL().string().utf8().data())); } if (result.isSelected()) context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION; if (result.isContentEditable()) context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE; return WEBKIT_HIT_TEST_RESULT(g_object_new(WEBKIT_TYPE_HIT_TEST_RESULT, "link-uri", linkURI.get(), "image-uri", imageURI.get(), "media-uri", mediaURI.get(), "context", context, NULL)); }
static void empathy_webkit_context_menu_selection_done_cb (GtkMenuShell *menu, gpointer user_data) { WebKitHitTestResult *hit_test_result = WEBKIT_HIT_TEST_RESULT (user_data); g_object_unref (hit_test_result); }
static void webkit_hit_test_result_finalize(GObject* object) { WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object); WebKitHitTestResultPrivate* priv = web_hit_test_result->priv; g_free(priv->linkURI); g_free(priv->imageURI); g_free(priv->mediaURI); G_OBJECT_CLASS(webkit_hit_test_result_parent_class)->finalize(object); }
WebKitHitTestResult* kit(const WebCore::HitTestResult& result) { guint context = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT; GOwnPtr<char> linkURI(0); GOwnPtr<char> imageURI(0); GOwnPtr<char> mediaURI(0); WebKitDOMNode* node = 0; WebCore::Frame* targetFrame; WebCore::IntPoint point; if (!result.absoluteLinkURL().isEmpty()) { context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK; linkURI.set(g_strdup(result.absoluteLinkURL().string().utf8().data())); } if (!result.absoluteImageURL().isEmpty()) { context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE; imageURI.set(g_strdup(result.absoluteImageURL().string().utf8().data())); } if (!result.absoluteMediaURL().isEmpty()) { context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA; mediaURI.set(g_strdup(result.absoluteMediaURL().string().utf8().data())); } if (result.isSelected()) context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION; if (result.isContentEditable()) context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE; if (result.innerNonSharedNode()) node = kit(result.innerNonSharedNode()); targetFrame = result.targetFrame(); if (targetFrame && targetFrame->view()) { // Convert document coords to widget coords. point = targetFrame->view()->contentsToWindow(result.point()); } else point = result.point(); return WEBKIT_HIT_TEST_RESULT(g_object_new(WEBKIT_TYPE_HIT_TEST_RESULT, "link-uri", linkURI.get(), "image-uri", imageURI.get(), "media-uri", mediaURI.get(), "context", context, "inner-node", node, "x", point.x(), "y", point.y(), NULL)); }
static void empathy_webkit_open_address_cb (GtkMenuItem *menuitem, gpointer user_data) { WebKitHitTestResult *hit_test_result = WEBKIT_HIT_TEST_RESULT (user_data); gchar *uri; g_object_get (G_OBJECT (hit_test_result), "link-uri", &uri, NULL); empathy_url_show (GTK_WIDGET (menuitem), uri); g_free (uri); }
static void empathy_webkit_copy_address_cb (GtkMenuItem *menuitem, gpointer user_data) { WebKitHitTestResult *hit_test_result = WEBKIT_HIT_TEST_RESULT (user_data); gchar *uri; GtkClipboard *clipboard; g_object_get (G_OBJECT (hit_test_result), "link-uri", &uri, NULL); clipboard = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD); gtk_clipboard_set_text (clipboard, uri, -1); clipboard = gtk_clipboard_get (GDK_SELECTION_PRIMARY); gtk_clipboard_set_text (clipboard, uri, -1); g_free (uri); }
static void webkit_hit_test_result_dispose(GObject* object) { WEBKIT_HIT_TEST_RESULT(object)->priv->~WebKitHitTestResultPrivate(); G_OBJECT_CLASS(webkit_hit_test_result_parent_class)->dispose(object); }