[Xfce4-commits] <midori:master> Optimize get_absolute_offset_for_element
Christian Dywan
noreply at xfce.org
Tue Jan 10 02:08:03 CET 2012
Updating branch refs/heads/master
to 3d774d2d09a6533bc486c8aefbc0e211551f5cef (commit)
from 9445539c48e2e208bf6f1a8ce1193f8d311d16c9 (commit)
commit 3d774d2d09a6533bc486c8aefbc0e211551f5cef
Author: Alexander Butenko <a.butenka at gmail.com>
Date: Sat Jan 7 20:15:09 2012 -0400
Optimize get_absolute_offset_for_element
extensions/formhistory/formhistory-gdom-frontend.c | 40 ++++++++------------
1 files changed, 16 insertions(+), 24 deletions(-)
diff --git a/extensions/formhistory/formhistory-gdom-frontend.c b/extensions/formhistory/formhistory-gdom-frontend.c
index 06c9661..2c89fc7 100644
--- a/extensions/formhistory/formhistory-gdom-frontend.c
+++ b/extensions/formhistory/formhistory-gdom-frontend.c
@@ -67,32 +67,25 @@ formhistory_suggestion_selected_cb (GtkWidget* treeview,
}
static void
-get_absolute_offset_for_element (WebKitDOMElement* element,
- glong* x,
- glong* y,
- gboolean mainframe)
+get_absolute_offset_for_element (WebKitDOMElement* element,
+ WebKitDOMDocument* element_document,
+ WebKitDOMNodeList* frames,
+ glong* x,
+ glong* y,
+ gboolean ismainframe)
{
WebKitDOMElement* offset_parent;
- WebKitDOMDocument* element_document;
- gint offset_top = 0, offset_left = 0;
- gboolean ismainframe = FALSE;
- WebKitDOMNodeList* frames;
- WebKitDOMDocument* fdoc;
- int i;
+ gint i, offset_top = 0, offset_left = 0;
- frames = g_object_get_data (G_OBJECT (element), "framelist");
- element_document = g_object_get_data (G_OBJECT (element), "doc");
g_object_get (element, "offset-left", &offset_left,
"offset-top", &offset_top,
"offset-parent", &offset_parent,
NULL);
*x += offset_left;
*y += offset_top;
-
/* To avoid deadlock check only first element of the mainframe parent */
- if (mainframe == TRUE)
+ if (ismainframe == TRUE)
return;
-
if (offset_parent)
goto finish;
@@ -101,13 +94,13 @@ get_absolute_offset_for_element (WebKitDOMElement* element,
and get its offsets */
for (i = 0; i < webkit_dom_node_list_get_length (frames); i++)
{
+ WebKitDOMDocument *fdoc;
WebKitDOMNode *frame = webkit_dom_node_list_item (frames, i);
if (WEBKIT_DOM_IS_HTML_IFRAME_ELEMENT (frame))
fdoc = webkit_dom_html_iframe_element_get_content_document (WEBKIT_DOM_HTML_IFRAME_ELEMENT (frame));
else
fdoc = webkit_dom_html_frame_element_get_content_document (WEBKIT_DOM_HTML_FRAME_ELEMENT (frame));
-
if (fdoc == element_document)
{
offset_parent = WEBKIT_DOM_ELEMENT (frame);
@@ -117,20 +110,17 @@ get_absolute_offset_for_element (WebKitDOMElement* element,
break;
}
}
- if (!offset_parent)
- return;
finish:
- /* Copy set properties to parents as they dont have them set */
- /* FIXME: Seems we need to drop them afterwards to save some memory? */
- g_object_set_data (G_OBJECT (offset_parent), "doc", element_document);
- g_object_set_data (G_OBJECT (offset_parent), "framelist", frames);
- get_absolute_offset_for_element (offset_parent, x, y, ismainframe);
+ if (offset_parent)
+ get_absolute_offset_for_element (offset_parent, element_document, frames, x, y, ismainframe);
}
static void
formhistory_reposition_popup (FormHistoryPriv* priv,
GtkWidget* widget)
{
+ WebKitDOMDocument* element_document;
+ WebKitDOMNodeList* frames;
GdkWindow* window;
gint rx, ry;
gint wx, wy;
@@ -146,7 +136,9 @@ formhistory_reposition_popup (FormHistoryPriv* priv,
gdk_window_get_position (window, &wx, &wy);
/* Position of editbox on the webview */
- get_absolute_offset_for_element (priv->element, &x, &y, FALSE);
+ frames = g_object_get_data (G_OBJECT (priv->element), "framelist");
+ element_document = g_object_get_data (G_OBJECT (priv->element), "doc");
+ get_absolute_offset_for_element (priv->element, element_document, frames, &x, &y, FALSE);
/* Add height as menu should start under editbox, now on top of it */
g_object_get (priv->element, "client-height", &height, NULL);
y += height + 1;
More information about the Xfce4-commits
mailing list