mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-12-16 06:18:43 +00:00
Changed: Use url from <base> element for relative urls
This commit is contained in:
parent
8977cbcaeb
commit
368546162c
2 changed files with 37 additions and 3 deletions
|
@ -369,13 +369,21 @@ namespace NLGUI
|
||||||
// Delete page content and prepare next page
|
// Delete page content and prepare next page
|
||||||
void removeContent ();
|
void removeContent ();
|
||||||
|
|
||||||
// Current URL
|
// Current URL for relative links in page
|
||||||
std::string _URL;
|
std::string _URL;
|
||||||
|
// Current URL
|
||||||
|
std::string _DocumentUrl;
|
||||||
|
// Valid base href was found
|
||||||
|
bool _IgnoreBaseUrlTag;
|
||||||
// Fragment from loading url
|
// Fragment from loading url
|
||||||
std::string _UrlFragment;
|
std::string _UrlFragment;
|
||||||
std::map<std::string,NLGUI::CInterfaceElement *> _Anchors;
|
std::map<std::string,NLGUI::CInterfaceElement *> _Anchors;
|
||||||
std::vector<std::string> _AnchorName;
|
std::vector<std::string> _AnchorName;
|
||||||
|
|
||||||
|
// Parser context
|
||||||
|
bool _ReadingHeadTag;
|
||||||
|
bool _IgnoreHeadTag;
|
||||||
|
|
||||||
// Current DOMAIN
|
// Current DOMAIN
|
||||||
bool _TrustedDomain;
|
bool _TrustedDomain;
|
||||||
|
|
||||||
|
|
|
@ -1117,6 +1117,24 @@ namespace NLGUI
|
||||||
// Paragraph ?
|
// Paragraph ?
|
||||||
switch(element_number)
|
switch(element_number)
|
||||||
{
|
{
|
||||||
|
case HTML_HEAD:
|
||||||
|
_ReadingHeadTag = !_IgnoreHeadTag;
|
||||||
|
_IgnoreHeadTag = true;
|
||||||
|
break;
|
||||||
|
case HTML_BASE:
|
||||||
|
if (_ReadingHeadTag && !_IgnoreBaseUrlTag)
|
||||||
|
{
|
||||||
|
if (present[HTML_BASE_HREF] && value[HTML_BASE_HREF])
|
||||||
|
{
|
||||||
|
CUrlParser uri(value[HTML_BASE_HREF]);
|
||||||
|
if (uri.isAbsolute())
|
||||||
|
{
|
||||||
|
_URL = uri.toString();
|
||||||
|
_IgnoreBaseUrlTag = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
case HTML_A:
|
case HTML_A:
|
||||||
{
|
{
|
||||||
CStyleParams style;
|
CStyleParams style;
|
||||||
|
@ -2110,6 +2128,9 @@ namespace NLGUI
|
||||||
// Paragraph ?
|
// Paragraph ?
|
||||||
switch(element_number)
|
switch(element_number)
|
||||||
{
|
{
|
||||||
|
case HTML_HEAD:
|
||||||
|
_ReadingHeadTag = false;
|
||||||
|
break;
|
||||||
case HTML_FONT:
|
case HTML_FONT:
|
||||||
popIfNotEmpty (_TextColor);
|
popIfNotEmpty (_TextColor);
|
||||||
popIfNotEmpty (_FontSize);
|
popIfNotEmpty (_FontSize);
|
||||||
|
@ -2397,6 +2418,7 @@ namespace NLGUI
|
||||||
_LI = false;
|
_LI = false;
|
||||||
_SelectOption = false;
|
_SelectOption = false;
|
||||||
_GroupListAdaptor = NULL;
|
_GroupListAdaptor = NULL;
|
||||||
|
_DocumentUrl = "";
|
||||||
_UrlFragment.clear();
|
_UrlFragment.clear();
|
||||||
|
|
||||||
// Register
|
// Register
|
||||||
|
@ -3481,11 +3503,11 @@ namespace NLGUI
|
||||||
// Anchor to scroll after page has loaded
|
// Anchor to scroll after page has loaded
|
||||||
_UrlFragment = uri.hash;
|
_UrlFragment = uri.hash;
|
||||||
|
|
||||||
uri.inherit(_URL);
|
uri.inherit(_DocumentUrl);
|
||||||
uri.hash.clear();
|
uri.hash.clear();
|
||||||
|
|
||||||
// compare urls and see if we only navigating to new anchor
|
// compare urls and see if we only navigating to new anchor
|
||||||
if (!force && _URL == uri.toString())
|
if (!force && _DocumentUrl == uri.toString())
|
||||||
{
|
{
|
||||||
// scroll happens in updateCoords()
|
// scroll happens in updateCoords()
|
||||||
invalidateCoords();
|
invalidateCoords();
|
||||||
|
@ -4097,6 +4119,9 @@ namespace NLGUI
|
||||||
_TextArea = false;
|
_TextArea = false;
|
||||||
_Object = false;
|
_Object = false;
|
||||||
_Localize = false;
|
_Localize = false;
|
||||||
|
_ReadingHeadTag = false;
|
||||||
|
_IgnoreHeadTag = false;
|
||||||
|
_IgnoreBaseUrlTag = false;
|
||||||
|
|
||||||
// TR
|
// TR
|
||||||
|
|
||||||
|
@ -4751,6 +4776,7 @@ namespace NLGUI
|
||||||
|
|
||||||
//
|
//
|
||||||
_Browsing = true;
|
_Browsing = true;
|
||||||
|
_DocumentUrl = _URL;
|
||||||
|
|
||||||
// clear content
|
// clear content
|
||||||
beginBuild();
|
beginBuild();
|
||||||
|
|
Loading…
Reference in a new issue