Improved handling of anchors in wxHTML: scroll to better position (patch #11406).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2009-11-17 20:20:48 +00:00
parent fde702ea51
commit 8e6c2840b4
3 changed files with 21 additions and 5 deletions

View File

@@ -716,6 +716,7 @@ All (GUI):
new CheckFit() method for more information. new CheckFit() method for more information.
- Allow reading GIFs with incorrectly specified animation size. - Allow reading GIFs with incorrectly specified animation size.
- Return number of frames in animated GIF from wxGIFHandler::GetImageCount(). - Return number of frames in animated GIF from wxGIFHandler::GetImageCount().
- Improved anchors handling in wxHTML.
wxGTK: wxGTK:

View File

@@ -25,7 +25,11 @@ Agrave = 'à'
This is - - default text, now switching to This is - - default text, now switching to
<CENTER> <CENTER>
<P>center, now still ctr, now exiting</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 <P>Hello, this *is* default charset (helvetica, probably) and it is displayed
with one&nbsp; <FONT COLOR="#FF0000">COLOR CHANGE</FONT>. Of course we 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> 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; <BR>&nbsp;
<P><BR> <P><BR>
<CENTER> <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> how do you like (space) it?</CENTER>
<DIV ALIGN=right>RIGHT: <FONT SIZE=-2>text-2, </FONT><FONT SIZE=-1>text-1, <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 <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 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 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 <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 fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen
fourteen fourteenfourteen FOURTEEN</FONT> fourteen fourteenfourteen FOURTEEN</FONT>
<P><FONT SIZE=-2>fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen <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 fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen fourteen fourteen fourteen fourteenfourteen FOURTEEN fourteen fourteen fourteen
fourteenfourteen FOURTEEN</FONT> fourteen fourteen fourteen fourteen fourteen FOURTEEN</FONT>
<LI> <LI>
<FONT SIZE=-2>This is item number 15.</FONT></LI> <FONT SIZE=-2>This is item number 15.</FONT></LI>
</OL> </OL>

View File

@@ -657,6 +657,16 @@ bool wxHtmlWindow::ScrollToAnchor(const wxString& anchor)
} }
else 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; int y;
for (y = 0; c != NULL; c = c->GetParent()) y += c->GetPosY(); for (y = 0; c != NULL; c = c->GetParent()) y += c->GetPosY();