]> git.saurik.com Git - wxWidgets.git/commitdiff
Improved handling of anchors in wxHTML: scroll to better position (patch #11406).
authorVáclav Slavík <vslavik@fastmail.fm>
Tue, 17 Nov 2009 20:20:48 +0000 (20:20 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Tue, 17 Nov 2009 20:20:48 +0000 (20:20 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
samples/html/test/test.htm
src/html/htmlwin.cpp

index f87dbe627e96662508354fae91897087ada7bf13..6ba84595a4c1f66cb21f418ae15d32156d1d58cc 100644 (file)
@@ -716,6 +716,7 @@ All (GUI):
   new CheckFit() method for more information.
 - Allow reading GIFs with incorrectly specified animation size.
 - Return number of frames in animated GIF from wxGIFHandler::GetImageCount().
+- Improved anchors handling in wxHTML.
 
 wxGTK:
 
index 82a791c42a45087f24e7cdc281b3809c2252b722..2ca1052a2ce4eaa8ffc14949a52715bb60268353 100644 (file)
@@ -25,7 +25,11 @@ Agrave = '&agrave;'
 This is - - default text, now switching to
 <CENTER>
 <P>center, now still ctr, now exiting</CENTER>
-exited!.<A HREF="#downtown">[link to down]</A>
+exited!.<A HREF="#downtown">[link to down]</A> 
+<P><A HREF="#centeredbigempty">[link to REALLY Big Text (empty anchor)]</A> 
+ <A HREF="#centeredbig">[link to REALLY Big Text (anchor containing text)]</A>
+<P> <A HREF="#parempty">[link into paragraph (empty anchor)]</A>  <A HREF="#par">[link into paragraph (anchor containing text)]</A> 
+  <A HREF="#emptycontainer">[link to empty container]</A>
 <P>Hello, this *is* default charset (helvetica, probably) and it is displayed
 with one&nbsp; <FONT COLOR="#FF0000">COLOR CHANGE</FONT>. Of course we
 can have as many color changes as we can, what about this <FONT COLOR="#FF0000">M</FONT><FONT COLOR="#FFFF00">A</FONT><FONT COLOR="#33FF33">D</FONT><B><FONT COLOR="#FFFFFF"><FONT SIZE=+1>N</FONT></FONT></B>E<FONT COLOR="#999999">S</FONT><FONT COLOR="#CC33CC">S?</FONT>
@@ -38,7 +42,8 @@ V E R Y T H I N G</U></I></B>.
 <BR>&nbsp;
 <P><BR>
 <CENTER>
-<P>Right now, <FONT COLOR="#0000FF"><FONT SIZE=+4>centered REALLY Big Text</FONT></FONT>,
+<A NAME="emptycontainer"></a>
+<P>Right now, <FONT COLOR="#0000FF"><FONT SIZE=+4><A NAME="centeredbigempty"></a><A NAME="centeredbig">centered REALLY Big Text</a></FONT></FONT>,
 how do you like (space) it?</CENTER>
 
 <DIV ALIGN=right>RIGHT: <FONT SIZE=-2>text-2, </FONT><FONT SIZE=-1>text-1,
@@ -237,14 +242,14 @@ kjegiquw iuqdb qiud iquwd hurray googoo.</FONT></LI>
 <FONT SIZE=+2>fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen
 fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen
 FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN
-fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN</FONT></LI>
+fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen <A NAME="parempty"></a><A NAME="par">(anchor here) fourteen</a> fourteen fourteen fourteen fourteenfourteen FOURTEEN</FONT></LI>
 
 <P><BR><FONT SIZE=-2>fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen
 fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen
 fourteen fourteenfourteen FOURTEEN</FONT>
 <P><FONT SIZE=-2>fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen
-fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen
-fourteenfourteen FOURTEEN</FONT>
+fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen
+fourteen fourteen fourteen fourteen fourteen FOURTEEN</FONT>
 <LI>
 <FONT SIZE=-2>This is item number 15.</FONT></LI>
 </OL>
index 86e997045a0f5f737df50fec9ae31599054d7340..636a07610f699b55e6b2113f5e774264aa207dde 100644 (file)
@@ -657,6 +657,16 @@ bool wxHtmlWindow::ScrollToAnchor(const wxString& anchor)
     }
     else
     {
+        // Go to next visible cell in current container, if it exists. This
+        // yields a bit better (even though still imperfect) results in that
+        // there's better chance of using a suitable cell for upper Y
+        // coordinate value. See bug #11406 for additional discussion.
+        const wxHtmlCell *c_save = c;
+        while ( c && c->IsFormattingCell() )
+            c = c->GetNext();
+        if ( !c )
+            c = c_save;
+
         int y;
 
         for (y = 0; c != NULL; c = c->GetParent()) y += c->GetPosY();