<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US"> <head> <title>khtml: kjs_window.cpp Source File (khtml)</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org" r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org" r (n 0 s 0 v 0 l 0))' /> <meta name="trademark" content="KDE e.V." /> <meta name="description" content="K Desktop Environment Homepage, KDE.org" /> <meta name="MSSmartTagsPreventParsing" content="true" /> <meta name="robots" content="all" /> <link rel="shortcut icon" href="../../favicon.ico" /> <link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" /> </head> <body> <div id="nav_header_top" align="right"> <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a> <a href="../.."><img id="nav_header_logo" alt="Home" align="left" src="../../kde_gear_64.png" border="0" /></a> <span class="doNotDisplay">::</span> <div id="nav_header_title" align="left">KDE API Reference</div> </div> <div id="nav_header_bottom" align="right"> <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span> <div id="nav_header_bottom_right" style="text-align: left;"> / <a href="../..">API Reference</a> / <a href=".">khtml</a> </div> </div> <table id="main" border="0" cellpadding="0" cellspacing="0" width="100%"> <tr> <td valign="top" class="menuheader" height="0"></td> <td id="contentcolumn" valign="top" rowspan="2" > <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;"> <a name="content"></a> <!-- Generated by Doxygen 1.4.7 --> <h1>kjs_window.cpp</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- c-basic-offset: 2 -*-</span> <a name="l00002"></a>00002 <span class="comment">/*</span> <a name="l00003"></a>00003 <span class="comment"> * This file is part of the KDE libraries</span> <a name="l00004"></a>00004 <span class="comment"> * Copyright (C) 2000-2003 Harri Porten (porten@kde.org)</span> <a name="l00005"></a>00005 <span class="comment"> * Copyright (C) 2001-2003 David Faure (faure@kde.org)</span> <a name="l00006"></a>00006 <span class="comment"> * Copyright (C) 2003 Apple Computer, Inc.</span> <a name="l00007"></a>00007 <span class="comment"> *</span> <a name="l00008"></a>00008 <span class="comment"> * This library is free software; you can redistribute it and/or</span> <a name="l00009"></a>00009 <span class="comment"> * modify it under the terms of the GNU Library General Public</span> <a name="l00010"></a>00010 <span class="comment"> * License as published by the Free Software Foundation; either</span> <a name="l00011"></a>00011 <span class="comment"> * version 2 of the License, or (at your option) any later version.</span> <a name="l00012"></a>00012 <span class="comment"> *</span> <a name="l00013"></a>00013 <span class="comment"> * This library is distributed in the hope that it will be useful,</span> <a name="l00014"></a>00014 <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span> <a name="l00015"></a>00015 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span> <a name="l00016"></a>00016 <span class="comment"> * Library General Public License for more details.</span> <a name="l00017"></a>00017 <span class="comment"> *</span> <a name="l00018"></a>00018 <span class="comment"> * You should have received a copy of the GNU Library General Public</span> <a name="l00019"></a>00019 <span class="comment"> * License along with this library; if not, write to the Free Software</span> <a name="l00020"></a>00020 <span class="comment"> * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA</span> <a name="l00021"></a>00021 <span class="comment"> */</span> <a name="l00022"></a>00022 <span class="preprocessor">#include "config.h"</span> <a name="l00023"></a>00023 <a name="l00024"></a>00024 <span class="preprocessor">#include "khtmlview.h"</span> <a name="l00025"></a>00025 <span class="preprocessor">#include "khtml_part.h"</span> <a name="l00026"></a>00026 <span class="preprocessor">#include "khtmlpart_p.h"</span> <a name="l00027"></a>00027 <span class="preprocessor">#include "khtml_settings.h"</span> <a name="l00028"></a>00028 <span class="preprocessor">#include "xml/dom2_eventsimpl.h"</span> <a name="l00029"></a>00029 <span class="preprocessor">#include "xml/dom_docimpl.h"</span> <a name="l00030"></a>00030 <span class="preprocessor">#include "misc/htmltags.h"</span> <a name="l00031"></a>00031 <span class="preprocessor">#include "html/html_documentimpl.h"</span> <a name="l00032"></a>00032 <span class="preprocessor">#include "rendering/render_frames.h"</span> <a name="l00033"></a>00033 <a name="l00034"></a>00034 <span class="preprocessor">#include <qstylesheet.h></span> <a name="l00035"></a>00035 <span class="preprocessor">#include <qtimer.h></span> <a name="l00036"></a>00036 <span class="preprocessor">#include <qpaintdevicemetrics.h></span> <a name="l00037"></a>00037 <span class="preprocessor">#include <qapplication.h></span> <a name="l00038"></a>00038 <span class="preprocessor">#include <kdebug.h></span> <a name="l00039"></a>00039 <span class="preprocessor">#include <kmessagebox.h></span> <a name="l00040"></a>00040 <span class="preprocessor">#include <kinputdialog.h></span> <a name="l00041"></a>00041 <span class="preprocessor">#include <<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/klocale_8h.html">klocale.h</a>></span> <a name="l00042"></a>00042 <span class="preprocessor">#include <kmdcodec.h></span> <a name="l00043"></a>00043 <span class="preprocessor">#include <kparts/browserinterface.h></span> <a name="l00044"></a>00044 <span class="preprocessor">#include <kwin.h></span> <a name="l00045"></a>00045 <a name="l00046"></a>00046 <span class="preprocessor">#if defined Q_WS_X11 && ! defined K_WS_QTONLY</span> <a name="l00047"></a>00047 <span class="preprocessor"></span><span class="preprocessor">#include <kwinmodule.h></span> <span class="comment">// schroder</span> <a name="l00048"></a>00048 <span class="preprocessor">#endif</span> <a name="l00049"></a>00049 <span class="preprocessor"></span> <a name="l00050"></a>00050 <span class="preprocessor">#ifndef KONQ_EMBEDDED</span> <a name="l00051"></a>00051 <span class="preprocessor"></span><span class="preprocessor">#include <kbookmarkmanager.h></span> <a name="l00052"></a>00052 <span class="preprocessor">#endif</span> <a name="l00053"></a>00053 <span class="preprocessor"></span><span class="preprocessor">#include <kglobalsettings.h></span> <a name="l00054"></a>00054 <span class="preprocessor">#include <assert.h></span> <a name="l00055"></a>00055 <span class="preprocessor">#include <qstyle.h></span> <a name="l00056"></a>00056 <span class="preprocessor">#include <qobjectlist.h></span> <a name="l00057"></a>00057 <span class="preprocessor">#include <kstringhandler.h></span> <a name="l00058"></a>00058 <a name="l00059"></a>00059 <span class="preprocessor">#include "kjs_proxy.h"</span> <a name="l00060"></a>00060 <span class="preprocessor">#include "kjs_window.h"</span> <a name="l00061"></a>00061 <span class="preprocessor">#include "kjs_navigator.h"</span> <a name="l00062"></a>00062 <span class="preprocessor">#include "kjs_mozilla.h"</span> <a name="l00063"></a>00063 <span class="preprocessor">#include "kjs_html.h"</span> <a name="l00064"></a>00064 <span class="preprocessor">#include "kjs_range.h"</span> <a name="l00065"></a>00065 <span class="preprocessor">#include "kjs_traversal.h"</span> <a name="l00066"></a>00066 <span class="preprocessor">#include "kjs_css.h"</span> <a name="l00067"></a>00067 <span class="preprocessor">#include "kjs_events.h"</span> <a name="l00068"></a>00068 <span class="preprocessor">#include "kjs_views.h"</span> <a name="l00069"></a>00069 <span class="preprocessor">#include "xmlhttprequest.h"</span> <a name="l00070"></a>00070 <span class="preprocessor">#include "xmlserializer.h"</span> <a name="l00071"></a>00071 <span class="preprocessor">#include "domparser.h"</span> <a name="l00072"></a>00072 <a name="l00073"></a>00073 <span class="keyword">using namespace </span>KJS; <a name="l00074"></a>00074 <a name="l00075"></a>00075 <span class="keyword">namespace </span>KJS { <a name="l00076"></a>00076 <a name="l00077"></a>00077 <span class="keyword">class </span>History : <span class="keyword">public</span> ObjectImp { <a name="l00078"></a>00078 <span class="keyword">friend</span> <span class="keyword">class </span>HistoryFunc; <a name="l00079"></a>00079 <span class="keyword">public</span>: <a name="l00080"></a>00080 History(ExecState *exec, <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *p) <a name="l00081"></a>00081 : ObjectImp(exec->interpreter()->builtinObjectPrototype()), part(p) { } <a name="l00082"></a>00082 <span class="keyword">virtual</span> Value get(ExecState *exec, <span class="keyword">const</span> Identifier &propertyName) <span class="keyword">const</span>; <a name="l00083"></a>00083 Value getValueProperty(ExecState *exec, <span class="keywordtype">int</span> token) <span class="keyword">const</span>; <a name="l00084"></a>00084 <span class="keyword">virtual</span> <span class="keyword">const</span> ClassInfo* classInfo()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &info; } <a name="l00085"></a>00085 <span class="keyword">static</span> <span class="keyword">const</span> ClassInfo info; <a name="l00086"></a>00086 <span class="keyword">enum</span> { Back, Forward, Go, Length }; <a name="l00087"></a>00087 <span class="keyword">private</span>: <a name="l00088"></a>00088 <a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html">QGuardedPtr<KHTMLPart></a> part; <a name="l00089"></a>00089 }; <a name="l00090"></a>00090 <a name="l00091"></a>00091 <span class="keyword">class </span>External : <span class="keyword">public</span> ObjectImp { <a name="l00092"></a>00092 <span class="keyword">friend</span> <span class="keyword">class </span>ExternalFunc; <a name="l00093"></a>00093 <span class="keyword">public</span>: <a name="l00094"></a>00094 External(ExecState *exec, <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *p) <a name="l00095"></a>00095 : ObjectImp(exec->interpreter()->builtinObjectPrototype()), part(p) { } <a name="l00096"></a>00096 <span class="keyword">virtual</span> Value get(ExecState *exec, <span class="keyword">const</span> Identifier &propertyName) <span class="keyword">const</span>; <a name="l00097"></a>00097 <span class="keyword">virtual</span> <span class="keyword">const</span> ClassInfo* classInfo()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> &info; } <a name="l00098"></a>00098 <span class="keyword">static</span> <span class="keyword">const</span> ClassInfo info; <a name="l00099"></a>00099 <span class="keyword">enum</span> { AddFavorite }; <a name="l00100"></a>00100 <span class="keyword">private</span>: <a name="l00101"></a>00101 <a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html">QGuardedPtr<KHTMLPart></a> part; <a name="l00102"></a>00102 }; <a name="l00103"></a>00103 <a name="l00104"></a>00104 <span class="keyword">class </span>FrameArray : <span class="keyword">public</span> ObjectImp { <a name="l00105"></a>00105 <span class="keyword">public</span>: <a name="l00106"></a>00106 FrameArray(ExecState *exec, <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *p) <a name="l00107"></a>00107 : ObjectImp(exec->interpreter()->builtinObjectPrototype()), part(p) { } <a name="l00108"></a>00108 <span class="keyword">virtual</span> Value get(ExecState *exec, <span class="keyword">const</span> Identifier &propertyName) <span class="keyword">const</span>; <a name="l00109"></a>00109 <span class="keyword">virtual</span> Value call(ExecState *exec, Object &thisObj, <span class="keyword">const</span> List &args); <a name="l00110"></a>00110 <span class="keyword">virtual</span> <span class="keywordtype">bool</span> implementsCall()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> <span class="keyword">true</span>; } <a name="l00111"></a>00111 <span class="keyword">private</span>: <a name="l00112"></a>00112 <a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html">QGuardedPtr<KHTMLPart></a> part; <a name="l00113"></a>00113 }; <a name="l00114"></a>00114 <a name="l00115"></a>00115 <span class="preprocessor">#ifdef Q_WS_QWS</span> <a name="l00116"></a>00116 <span class="preprocessor"></span> <span class="keyword">class </span>KonquerorFunc : <span class="keyword">public</span> <a class="code" href="classKJS_1_1DOMFunction.html">DOMFunction</a> { <a name="l00117"></a>00117 <span class="keyword">public</span>: <a name="l00118"></a>00118 KonquerorFunc(ExecState *exec, <span class="keyword">const</span> Konqueror* k, <span class="keyword">const</span> <span class="keywordtype">char</span>* name) <a name="l00119"></a>00119 : <a class="code" href="classKJS_1_1DOMFunction.html">DOMFunction</a>(exec), konqueror(k), m_name(name) { } <a name="l00120"></a>00120 <span class="keyword">virtual</span> Value tryCall(ExecState *exec, Object &thisObj, <span class="keyword">const</span> List &args); <a name="l00121"></a>00121 <a name="l00122"></a>00122 <span class="keyword">private</span>: <a name="l00123"></a>00123 <span class="keyword">const</span> Konqueror* konqueror; <a name="l00124"></a>00124 <a class="codeRef" doxygen="qt.tag:" href="qcstring.html">QCString</a> m_name; <a name="l00125"></a>00125 }; <a name="l00126"></a>00126 <span class="preprocessor">#endif</span> <a name="l00127"></a>00127 <span class="preprocessor"></span>} <span class="comment">// namespace KJS</span> <a name="l00128"></a>00128 <a name="l00129"></a>00129 <span class="preprocessor">#include "kjs_window.lut.h"</span> <a name="l00130"></a>00130 <span class="preprocessor">#include "rendering/render_replaced.h"</span> <a name="l00131"></a>00131 <a name="l00133"></a>00133 <a name="l00134"></a>00134 <span class="comment">// table for screen object</span> <a name="l00135"></a>00135 <span class="comment">/*</span> <a name="l00136"></a>00136 <span class="comment">@begin ScreenTable 7</span> <a name="l00137"></a>00137 <span class="comment"> height Screen::Height DontEnum|ReadOnly</span> <a name="l00138"></a>00138 <span class="comment"> width Screen::Width DontEnum|ReadOnly</span> <a name="l00139"></a>00139 <span class="comment"> colorDepth Screen::ColorDepth DontEnum|ReadOnly</span> <a name="l00140"></a>00140 <span class="comment"> pixelDepth Screen::PixelDepth DontEnum|ReadOnly</span> <a name="l00141"></a>00141 <span class="comment"> availLeft Screen::AvailLeft DontEnum|ReadOnly</span> <a name="l00142"></a>00142 <span class="comment"> availTop Screen::AvailTop DontEnum|ReadOnly</span> <a name="l00143"></a>00143 <span class="comment"> availHeight Screen::AvailHeight DontEnum|ReadOnly</span> <a name="l00144"></a>00144 <span class="comment"> availWidth Screen::AvailWidth DontEnum|ReadOnly</span> <a name="l00145"></a>00145 <span class="comment">@end</span> <a name="l00146"></a>00146 <span class="comment">*/</span> <a name="l00147"></a>00147 <a name="l00148"></a>00148 <span class="keyword">const</span> ClassInfo Screen::info = { <span class="stringliteral">"Screen"</span>, 0, &<a class="code" href="namespaceKJS.html#b51a328f0641b83602dcf9b1a59b8a69">ScreenTable</a>, 0 }; <a name="l00149"></a>00149 <a name="l00150"></a>00150 <span class="comment">// We set the object prototype so that toString is implemented</span> <a name="l00151"></a><a class="code" href="classKJS_1_1Screen.html#bd91cda3cf72f4453c6be44ccf56c7b8">00151</a> Screen::Screen(ExecState *exec) <a name="l00152"></a>00152 : ObjectImp(exec->interpreter()->builtinObjectPrototype()) {} <a name="l00153"></a>00153 <a name="l00154"></a><a class="code" href="classKJS_1_1Screen.html#3df14f5bef19dc279ccf9105b27146c3">00154</a> Value <a class="code" href="classKJS_1_1Screen.html#3df14f5bef19dc279ccf9105b27146c3">Screen::get</a>(ExecState *exec, <span class="keyword">const</span> Identifier &p)<span class="keyword"> const</span> <a name="l00155"></a>00155 <span class="keyword"></span>{ <a name="l00156"></a>00156 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l00157"></a>00157 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Screen::get "</span> << p.qstring() << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00158"></a>00158 <span class="preprocessor">#endif</span> <a name="l00159"></a>00159 <span class="preprocessor"></span> <span class="keywordflow">return</span> lookupGetValue<Screen,ObjectImp>(exec,p,&<a class="code" href="namespaceKJS.html#b51a328f0641b83602dcf9b1a59b8a69">ScreenTable</a>,<span class="keyword">this</span>); <a name="l00160"></a>00160 } <a name="l00161"></a>00161 <a name="l00162"></a><a class="code" href="classKJS_1_1Screen.html#c04e25e13c1045550f2cdd61e8b98972">00162</a> Value <a class="code" href="classKJS_1_1Screen.html#c04e25e13c1045550f2cdd61e8b98972">Screen::getValueProperty</a>(ExecState *exec, <span class="keywordtype">int</span> token)<span class="keyword"> const</span> <a name="l00163"></a>00163 <span class="keyword"></span>{ <a name="l00164"></a>00164 <span class="preprocessor">#if defined Q_WS_X11 && ! defined K_WS_QTONLY</span> <a name="l00165"></a>00165 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWinModule.html">KWinModule</a> info(0, <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWinModule.html#e9921b08695860d62ebdd8859a843c8d45040e3315dd4e811fe8304079731f8f">KWinModule::INFO_DESKTOP</a>); <a name="l00166"></a>00166 <span class="preprocessor">#endif</span> <a name="l00167"></a>00167 <span class="preprocessor"></span> <a class="codeRef" doxygen="qt.tag:" href="qwidget.html">QWidget</a> *thisWidget = <a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(exec)-><a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>()-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1Part.html#2d2efd56fe23904104c48dc56371c03d">widget</a>(); <a name="l00168"></a>00168 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> sg = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobalSettings.html#63f7c20327cdb7972e2aff9b765b8985">KGlobalSettings::desktopGeometry</a>(thisWidget); <a name="l00169"></a>00169 <a name="l00170"></a>00170 <span class="keywordflow">switch</span>( token ) { <a name="l00171"></a>00171 <span class="keywordflow">case</span> Height: <a name="l00172"></a>00172 <span class="keywordflow">return</span> Number(sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>()); <a name="l00173"></a>00173 <span class="keywordflow">case</span> Width: <a name="l00174"></a>00174 <span class="keywordflow">return</span> Number(sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>()); <a name="l00175"></a>00175 <span class="keywordflow">case</span> ColorDepth: <a name="l00176"></a>00176 <span class="keywordflow">case</span> PixelDepth: { <a name="l00177"></a>00177 <a class="codeRef" doxygen="qt.tag:" href="qpaintdevicemetrics.html">QPaintDeviceMetrics</a> m(<a class="codeRef" doxygen="qt.tag:" href="qapplication.html#desktop">QApplication::desktop</a>()); <a name="l00178"></a>00178 <span class="keywordflow">return</span> Number(m.<a class="codeRef" doxygen="qt.tag:" href="qpaintdevicemetrics.html#depth">depth</a>()); <a name="l00179"></a>00179 } <a name="l00180"></a>00180 <span class="keywordflow">case</span> AvailLeft: { <a name="l00181"></a>00181 <span class="preprocessor">#if defined Q_WS_X11 && ! defined K_WS_QTONLY</span> <a name="l00182"></a>00182 <span class="preprocessor"></span> <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> clipped = info.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWinModule.html#4fef713d2fa88161fe9a091b4ce0c652">workArea</a>().<a class="codeRef" doxygen="qt.tag:" href="qrect.html#intersect">intersect</a>(sg); <a name="l00183"></a>00183 <span class="keywordflow">return</span> Number(clipped.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>()-sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>()); <a name="l00184"></a>00184 <span class="preprocessor">#else</span> <a name="l00185"></a>00185 <span class="preprocessor"></span> <span class="keywordflow">return</span> Number(10); <a name="l00186"></a>00186 <span class="preprocessor">#endif</span> <a name="l00187"></a>00187 <span class="preprocessor"></span> } <a name="l00188"></a>00188 <span class="keywordflow">case</span> AvailTop: { <a name="l00189"></a>00189 <span class="preprocessor">#if defined Q_WS_X11 && ! defined K_WS_QTONLY</span> <a name="l00190"></a>00190 <span class="preprocessor"></span> <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> clipped = info.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWinModule.html#4fef713d2fa88161fe9a091b4ce0c652">workArea</a>().<a class="codeRef" doxygen="qt.tag:" href="qrect.html#intersect">intersect</a>(sg); <a name="l00191"></a>00191 <span class="keywordflow">return</span> Number(clipped.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>()-sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>()); <a name="l00192"></a>00192 <span class="preprocessor">#else</span> <a name="l00193"></a>00193 <span class="preprocessor"></span> <span class="keywordflow">return</span> Number(10); <a name="l00194"></a>00194 <span class="preprocessor">#endif</span> <a name="l00195"></a>00195 <span class="preprocessor"></span> } <a name="l00196"></a>00196 <span class="keywordflow">case</span> AvailHeight: { <a name="l00197"></a>00197 <span class="preprocessor">#if defined Q_WS_X11 && ! defined K_WS_QTONLY</span> <a name="l00198"></a>00198 <span class="preprocessor"></span> <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> clipped = info.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWinModule.html#4fef713d2fa88161fe9a091b4ce0c652">workArea</a>().<a class="codeRef" doxygen="qt.tag:" href="qrect.html#intersect">intersect</a>(sg); <a name="l00199"></a>00199 <span class="keywordflow">return</span> Number(clipped.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>()); <a name="l00200"></a>00200 <span class="preprocessor">#else</span> <a name="l00201"></a>00201 <span class="preprocessor"></span> <span class="keywordflow">return</span> Number(100); <a name="l00202"></a>00202 <span class="preprocessor">#endif</span> <a name="l00203"></a>00203 <span class="preprocessor"></span> } <a name="l00204"></a>00204 <span class="keywordflow">case</span> AvailWidth: { <a name="l00205"></a>00205 <span class="preprocessor">#if defined Q_WS_X11 && ! defined K_WS_QTONLY</span> <a name="l00206"></a>00206 <span class="preprocessor"></span> <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> clipped = info.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWinModule.html#4fef713d2fa88161fe9a091b4ce0c652">workArea</a>().<a class="codeRef" doxygen="qt.tag:" href="qrect.html#intersect">intersect</a>(sg); <a name="l00207"></a>00207 <span class="keywordflow">return</span> Number(clipped.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>()); <a name="l00208"></a>00208 <span class="preprocessor">#else</span> <a name="l00209"></a>00209 <span class="preprocessor"></span> <span class="keywordflow">return</span> Number(100); <a name="l00210"></a>00210 <span class="preprocessor">#endif</span> <a name="l00211"></a>00211 <span class="preprocessor"></span> } <a name="l00212"></a>00212 <span class="keywordflow">default</span>: <a name="l00213"></a>00213 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"WARNING: Screen::getValueProperty unhandled token "</span> << token << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00214"></a>00214 <span class="keywordflow">return</span> Undefined(); <a name="l00215"></a>00215 } <a name="l00216"></a>00216 } <a name="l00217"></a>00217 <a name="l00219"></a>00219 <a name="l00220"></a>00220 <span class="keyword">const</span> ClassInfo <a class="code" href="classKJS_1_1Window.html#6c924fbabb5a750666d50defe2cdd47b">Window::info</a> = { <span class="stringliteral">"Window"</span>, &<a class="code" href="classKJS_1_1DOMAbstractView.html#7a20f6cb844146b0f4e7a293de8901b4">DOMAbstractView::info</a>, &<a class="code" href="namespaceKJS.html#722ab173bd6b7a0dcdc9cfcd18e1922e">WindowTable</a>, 0 }; <a name="l00221"></a>00221 <a name="l00222"></a>00222 <span class="comment">/*</span> <a name="l00223"></a>00223 <span class="comment">@begin WindowTable 89</span> <a name="l00224"></a>00224 <span class="comment"> atob Window::AToB DontDelete|Function 1</span> <a name="l00225"></a>00225 <span class="comment"> btoa Window::BToA DontDelete|Function 1</span> <a name="l00226"></a>00226 <span class="comment"> closed Window::Closed DontDelete|ReadOnly</span> <a name="l00227"></a>00227 <span class="comment"> crypto Window::Crypto DontDelete|ReadOnly</span> <a name="l00228"></a>00228 <span class="comment"> defaultStatus Window::DefaultStatus DontDelete</span> <a name="l00229"></a>00229 <span class="comment"> defaultstatus Window::DefaultStatus DontDelete</span> <a name="l00230"></a>00230 <span class="comment"> status Window::Status DontDelete</span> <a name="l00231"></a>00231 <span class="comment"> document Window::Document DontDelete|ReadOnly</span> <a name="l00232"></a>00232 <span class="comment"> frameElement Window::FrameElement DontDelete|ReadOnly</span> <a name="l00233"></a>00233 <span class="comment"> frames Window::Frames DontDelete|ReadOnly</span> <a name="l00234"></a>00234 <span class="comment"> history Window::_History DontDelete|ReadOnly</span> <a name="l00235"></a>00235 <span class="comment"> external Window::_External DontDelete|ReadOnly</span> <a name="l00236"></a>00236 <span class="comment"> event Window::Event DontDelete|ReadOnly</span> <a name="l00237"></a>00237 <span class="comment"> innerHeight Window::InnerHeight DontDelete|ReadOnly</span> <a name="l00238"></a>00238 <span class="comment"> innerWidth Window::InnerWidth DontDelete|ReadOnly</span> <a name="l00239"></a>00239 <span class="comment"> length Window::Length DontDelete|ReadOnly</span> <a name="l00240"></a>00240 <span class="comment"> location Window::_Location DontDelete</span> <a name="l00241"></a>00241 <span class="comment"> name Window::Name DontDelete</span> <a name="l00242"></a>00242 <span class="comment"> navigator Window::_Navigator DontDelete|ReadOnly</span> <a name="l00243"></a>00243 <span class="comment"> clientInformation Window::ClientInformation DontDelete|ReadOnly</span> <a name="l00244"></a>00244 <span class="comment"> konqueror Window::_Konqueror DontDelete|ReadOnly</span> <a name="l00245"></a>00245 <span class="comment"> offscreenBuffering Window::OffscreenBuffering DontDelete|ReadOnly</span> <a name="l00246"></a>00246 <span class="comment"> opener Window::Opener DontDelete|ReadOnly</span> <a name="l00247"></a>00247 <span class="comment"> outerHeight Window::OuterHeight DontDelete|ReadOnly</span> <a name="l00248"></a>00248 <span class="comment"> outerWidth Window::OuterWidth DontDelete|ReadOnly</span> <a name="l00249"></a>00249 <span class="comment"> pageXOffset Window::PageXOffset DontDelete|ReadOnly</span> <a name="l00250"></a>00250 <span class="comment"> pageYOffset Window::PageYOffset DontDelete|ReadOnly</span> <a name="l00251"></a>00251 <span class="comment"> parent Window::Parent DontDelete|ReadOnly</span> <a name="l00252"></a>00252 <span class="comment"> personalbar Window::Personalbar DontDelete|ReadOnly</span> <a name="l00253"></a>00253 <span class="comment"> screenX Window::ScreenX DontDelete|ReadOnly</span> <a name="l00254"></a>00254 <span class="comment"> screenY Window::ScreenY DontDelete|ReadOnly</span> <a name="l00255"></a>00255 <span class="comment"> scrollbars Window::Scrollbars DontDelete|ReadOnly</span> <a name="l00256"></a>00256 <span class="comment"> scroll Window::Scroll DontDelete|Function 2</span> <a name="l00257"></a>00257 <span class="comment"> scrollBy Window::ScrollBy DontDelete|Function 2</span> <a name="l00258"></a>00258 <span class="comment"> scrollTo Window::ScrollTo DontDelete|Function 2</span> <a name="l00259"></a>00259 <span class="comment"> scrollX Window::ScrollX DontDelete|ReadOnly</span> <a name="l00260"></a>00260 <span class="comment"> scrollY Window::ScrollY DontDelete|ReadOnly</span> <a name="l00261"></a>00261 <span class="comment"> moveBy Window::MoveBy DontDelete|Function 2</span> <a name="l00262"></a>00262 <span class="comment"> moveTo Window::MoveTo DontDelete|Function 2</span> <a name="l00263"></a>00263 <span class="comment"> resizeBy Window::ResizeBy DontDelete|Function 2</span> <a name="l00264"></a>00264 <span class="comment"> resizeTo Window::ResizeTo DontDelete|Function 2</span> <a name="l00265"></a>00265 <span class="comment"> self Window::Self DontDelete|ReadOnly</span> <a name="l00266"></a>00266 <span class="comment"> window Window::_Window DontDelete|ReadOnly</span> <a name="l00267"></a>00267 <span class="comment"> top Window::Top DontDelete|ReadOnly</span> <a name="l00268"></a>00268 <span class="comment"> screen Window::_Screen DontDelete|ReadOnly</span> <a name="l00269"></a>00269 <span class="comment"> alert Window::Alert DontDelete|Function 1</span> <a name="l00270"></a>00270 <span class="comment"> confirm Window::Confirm DontDelete|Function 1</span> <a name="l00271"></a>00271 <span class="comment"> prompt Window::Prompt DontDelete|Function 2</span> <a name="l00272"></a>00272 <span class="comment"> open Window::Open DontDelete|Function 3</span> <a name="l00273"></a>00273 <span class="comment"> setTimeout Window::SetTimeout DontDelete|Function 2</span> <a name="l00274"></a>00274 <span class="comment"> clearTimeout Window::ClearTimeout DontDelete|Function 1</span> <a name="l00275"></a>00275 <span class="comment"> focus Window::Focus DontDelete|Function 0</span> <a name="l00276"></a>00276 <span class="comment"> blur Window::Blur DontDelete|Function 0</span> <a name="l00277"></a>00277 <span class="comment"> close Window::Close DontDelete|Function 0</span> <a name="l00278"></a>00278 <span class="comment"> setInterval Window::SetInterval DontDelete|Function 2</span> <a name="l00279"></a>00279 <span class="comment"> clearInterval Window::ClearInterval DontDelete|Function 1</span> <a name="l00280"></a>00280 <span class="comment"> captureEvents Window::CaptureEvents DontDelete|Function 0</span> <a name="l00281"></a>00281 <span class="comment"> releaseEvents Window::ReleaseEvents DontDelete|Function 0</span> <a name="l00282"></a>00282 <span class="comment"> print Window::Print DontDelete|Function 0</span> <a name="l00283"></a>00283 <span class="comment"> addEventListener Window::AddEventListener DontDelete|Function 3</span> <a name="l00284"></a>00284 <span class="comment"> removeEventListener Window::RemoveEventListener DontDelete|Function 3</span> <a name="l00285"></a>00285 <span class="comment"># IE extension</span> <a name="l00286"></a>00286 <span class="comment"> navigate Window::Navigate DontDelete|Function 1</span> <a name="l00287"></a>00287 <span class="comment"># Mozilla extension</span> <a name="l00288"></a>00288 <span class="comment"> sidebar Window::SideBar DontDelete|ReadOnly</span> <a name="l00289"></a>00289 <span class="comment"> getComputedStyle Window::GetComputedStyle DontDelete|Function 2</span> <a name="l00290"></a>00290 <span class="comment"></span> <a name="l00291"></a>00291 <span class="comment"># Warning, when adding a function to this object you need to add a case in Window::get</span> <a name="l00292"></a>00292 <span class="comment"></span> <a name="l00293"></a>00293 <span class="comment"># Event handlers</span> <a name="l00294"></a>00294 <span class="comment"># IE also has: onactivate, onbefore/afterprint, onbeforedeactivate/unload, oncontrolselect,</span> <a name="l00295"></a>00295 <span class="comment"># ondeactivate, onhelp, onmovestart/end, onresizestart/end, onscroll.</span> <a name="l00296"></a>00296 <span class="comment"># It doesn't have onabort, onchange, ondragdrop (but NS has that last one).</span> <a name="l00297"></a>00297 <span class="comment"> onabort Window::Onabort DontDelete</span> <a name="l00298"></a>00298 <span class="comment"> onblur Window::Onblur DontDelete</span> <a name="l00299"></a>00299 <span class="comment"> onchange Window::Onchange DontDelete</span> <a name="l00300"></a>00300 <span class="comment"> onclick Window::Onclick DontDelete</span> <a name="l00301"></a>00301 <span class="comment"> ondblclick Window::Ondblclick DontDelete</span> <a name="l00302"></a>00302 <span class="comment"> ondragdrop Window::Ondragdrop DontDelete</span> <a name="l00303"></a>00303 <span class="comment"> onerror Window::Onerror DontDelete</span> <a name="l00304"></a>00304 <span class="comment"> onfocus Window::Onfocus DontDelete</span> <a name="l00305"></a>00305 <span class="comment"> onkeydown Window::Onkeydown DontDelete</span> <a name="l00306"></a>00306 <span class="comment"> onkeypress Window::Onkeypress DontDelete</span> <a name="l00307"></a>00307 <span class="comment"> onkeyup Window::Onkeyup DontDelete</span> <a name="l00308"></a>00308 <span class="comment"> onload Window::Onload DontDelete</span> <a name="l00309"></a>00309 <span class="comment"> onmousedown Window::Onmousedown DontDelete</span> <a name="l00310"></a>00310 <span class="comment"> onmousemove Window::Onmousemove DontDelete</span> <a name="l00311"></a>00311 <span class="comment"> onmouseout Window::Onmouseout DontDelete</span> <a name="l00312"></a>00312 <span class="comment"> onmouseover Window::Onmouseover DontDelete</span> <a name="l00313"></a>00313 <span class="comment"> onmouseup Window::Onmouseup DontDelete</span> <a name="l00314"></a>00314 <span class="comment"> onmove Window::Onmove DontDelete</span> <a name="l00315"></a>00315 <span class="comment"> onreset Window::Onreset DontDelete</span> <a name="l00316"></a>00316 <span class="comment"> onresize Window::Onresize DontDelete</span> <a name="l00317"></a>00317 <span class="comment"> onselect Window::Onselect DontDelete</span> <a name="l00318"></a>00318 <span class="comment"> onsubmit Window::Onsubmit DontDelete</span> <a name="l00319"></a>00319 <span class="comment"> onunload Window::Onunload DontDelete</span> <a name="l00320"></a>00320 <span class="comment"></span> <a name="l00321"></a>00321 <span class="comment"># Constructors/constant tables</span> <a name="l00322"></a>00322 <span class="comment"> Node Window::Node DontDelete</span> <a name="l00323"></a>00323 <span class="comment"> Event Window::EventCtor DontDelete</span> <a name="l00324"></a>00324 <span class="comment"> Range Window::Range DontDelete</span> <a name="l00325"></a>00325 <span class="comment"> NodeFilter Window::NodeFilter DontDelete</span> <a name="l00326"></a>00326 <span class="comment"> DOMException Window::DOMException DontDelete</span> <a name="l00327"></a>00327 <span class="comment"> CSSRule Window::CSSRule DontDelete</span> <a name="l00328"></a>00328 <span class="comment"> MutationEvent Window::MutationEventCtor DontDelete</span> <a name="l00329"></a>00329 <span class="comment"> KeyboardEvent Window::KeyboardEventCtor DontDelete</span> <a name="l00330"></a>00330 <span class="comment"> EventException Window::EventExceptionCtor DontDelete</span> <a name="l00331"></a>00331 <span class="comment"> Image Window::Image DontDelete|ReadOnly</span> <a name="l00332"></a>00332 <span class="comment"> Option Window::Option DontDelete|ReadOnly</span> <a name="l00333"></a>00333 <span class="comment"> XMLHttpRequest Window::XMLHttpRequest DontDelete|ReadOnly</span> <a name="l00334"></a>00334 <span class="comment"> XMLSerializer Window::XMLSerializer DontDelete|ReadOnly</span> <a name="l00335"></a>00335 <span class="comment"> DOMParser Window::DOMParser DontDelete|ReadOnly</span> <a name="l00336"></a>00336 <span class="comment"></span> <a name="l00337"></a>00337 <span class="comment"># Mozilla dom emulation ones.</span> <a name="l00338"></a>00338 <span class="comment"> Element Window::ElementCtor DontDelete</span> <a name="l00339"></a>00339 <span class="comment"> Document Window::DocumentCtor DontDelete</span> <a name="l00340"></a>00340 <span class="comment"> #this one is an alias since we don't have a separate XMLDocument</span> <a name="l00341"></a>00341 <span class="comment"> XMLDocument Window::DocumentCtor DontDelete</span> <a name="l00342"></a>00342 <span class="comment"> HTMLElement Window::HTMLElementCtor DontDelete</span> <a name="l00343"></a>00343 <span class="comment"> HTMLDocument Window::HTMLDocumentCtor DontDelete</span> <a name="l00344"></a>00344 <span class="comment"> CSSStyleDeclaration Window::CSSStyleDeclarationCtor DontDelete</span> <a name="l00345"></a>00345 <span class="comment">@end</span> <a name="l00346"></a>00346 <span class="comment">*/</span> <a name="l00347"></a>00347 IMPLEMENT_PROTOFUNC_DOM(WindowFunc) <a name="l00348"></a>00348 <a name="l00349"></a><a class="code" href="classKJS_1_1Window.html#3d968cf2db157942a5dcf64526249058">00349</a> <a class="code" href="classKJS_1_1Window.html">Window</a>::<a class="code" href="classKJS_1_1Window.html">Window</a>(khtml::ChildFrame *p) <a name="l00350"></a>00350 : ObjectImp(<span class="comment">/*no proto*/</span>), m_frame(p), screen(0), history(0), external(0), m_frames(0), loc(0), m_evt(0) <a name="l00351"></a>00351 { <a name="l00352"></a>00352 winq = <span class="keyword">new</span> <a class="code" href="classKJS_1_1WindowQObject.html">WindowQObject</a>(<span class="keyword">this</span>); <a name="l00353"></a>00353 <span class="comment">//kdDebug(6070) << "Window::Window this=" << this << " part=" << m_part << " " << m_part->name() << endl;</span> <a name="l00354"></a>00354 } <a name="l00355"></a>00355 <a name="l00356"></a><a class="code" href="classKJS_1_1Window.html#245d821e6016fa1f6970ccbbedd635f6">00356</a> <a class="code" href="classKJS_1_1Window.html#245d821e6016fa1f6970ccbbedd635f6">Window::~Window</a>() <a name="l00357"></a>00357 { <a name="l00358"></a>00358 <span class="keyword">delete</span> <a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a>; <a name="l00359"></a>00359 } <a name="l00360"></a>00360 <a name="l00361"></a><a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">00361</a> <a class="code" href="classKJS_1_1Window.html">Window</a> *<a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *p) <a name="l00362"></a>00362 { <a name="l00363"></a>00363 Object obj = Object::dynamicCast( <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">retrieve</a>( p ) ); <a name="l00364"></a>00364 <span class="preprocessor">#ifndef NDEBUG</span> <a name="l00365"></a>00365 <span class="preprocessor"></span> <span class="comment">// obj should never be null, except when javascript has been disabled in that part.</span> <a name="l00366"></a>00366 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(p); <a name="l00367"></a>00367 <span class="keywordflow">if</span> ( <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jScriptEnabled() ) <a name="l00368"></a>00368 { <a name="l00369"></a>00369 assert( obj.isValid() ); <a name="l00370"></a>00370 <span class="preprocessor">#ifndef QWS</span> <a name="l00371"></a>00371 <span class="preprocessor"></span> assert( dynamic_cast<KJS::Window*>(obj.imp()) ); <span class="comment">// type checking</span> <a name="l00372"></a>00372 <span class="preprocessor">#endif</span> <a name="l00373"></a>00373 <span class="preprocessor"></span> } <a name="l00374"></a>00374 <span class="preprocessor">#endif</span> <a name="l00375"></a>00375 <span class="preprocessor"></span> <span class="keywordflow">if</span> ( !obj.isValid() ) <span class="comment">// JS disabled</span> <a name="l00376"></a>00376 <span class="keywordflow">return</span> 0; <a name="l00377"></a>00377 <span class="keywordflow">return</span> static_cast<KJS::Window*>(obj.imp()); <a name="l00378"></a>00378 } <a name="l00379"></a>00379 <a name="l00380"></a><a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">00380</a> <a class="code" href="classKJS_1_1Window.html">Window</a> *<a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(ExecState *exec) <a name="l00381"></a>00381 { <a name="l00382"></a>00382 ValueImp *imp = exec->interpreter()->globalObject().imp(); <a name="l00383"></a>00383 assert( imp ); <a name="l00384"></a>00384 <span class="preprocessor">#ifndef QWS</span> <a name="l00385"></a>00385 <span class="preprocessor"></span> assert( dynamic_cast<KJS::Window*>(imp) ); <a name="l00386"></a>00386 <span class="preprocessor">#endif</span> <a name="l00387"></a>00387 <span class="preprocessor"></span> <span class="keywordflow">return</span> static_cast<KJS::Window*>(imp); <a name="l00388"></a>00388 } <a name="l00389"></a>00389 <a name="l00390"></a><a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">00390</a> Value <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *p) <a name="l00391"></a>00391 { <a name="l00392"></a>00392 assert(p); <a name="l00393"></a>00393 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> * <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(p); <a name="l00394"></a>00394 <a class="code" href="classKJSProxy.html">KJSProxy</a> *proxy = 0L; <a name="l00395"></a>00395 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) { <a name="l00396"></a>00396 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(p-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#parent">parent</a>()); <a name="l00397"></a>00397 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l00398"></a>00398 proxy = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->framejScript(p); <a name="l00399"></a>00399 } <span class="keywordflow">else</span> <a name="l00400"></a>00400 proxy = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jScript(); <a name="l00401"></a>00401 <span class="keywordflow">if</span> (proxy) { <a name="l00402"></a>00402 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l00403"></a>00403 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::retrieve part="</span> << <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> << <span class="stringliteral">" '"</span> << <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#name">name</a>() << <span class="stringliteral">"' interpreter="</span> << proxy->interpreter() << <span class="stringliteral">" window="</span> << proxy->interpreter()->globalObject().imp() << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00404"></a>00404 <span class="preprocessor">#endif</span> <a name="l00405"></a>00405 <span class="preprocessor"></span> <span class="keywordflow">return</span> proxy->interpreter()->globalObject(); <span class="comment">// the Global object is the "window"</span> <a name="l00406"></a>00406 } <span class="keywordflow">else</span> { <a name="l00407"></a>00407 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l00408"></a>00408 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::retrieve part="</span> << p << <span class="stringliteral">" '"</span> << p-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#name">name</a>() << <span class="stringliteral">"' no jsproxy."</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00409"></a>00409 <span class="preprocessor">#endif</span> <a name="l00410"></a>00410 <span class="preprocessor"></span> <span class="keywordflow">return</span> Undefined(); <span class="comment">// This can happen with JS disabled on the domain of that window</span> <a name="l00411"></a>00411 } <a name="l00412"></a>00412 } <a name="l00413"></a>00413 <a name="l00414"></a><a class="code" href="classKJS_1_1Window.html#8d7aaa4b0b821a30186ebc64c62b1806">00414</a> <a class="code" href="classKJS_1_1Location.html">Location</a> *<a class="code" href="classKJS_1_1Window.html#8d7aaa4b0b821a30186ebc64c62b1806">Window::location</a>()<span class="keyword"> const</span> <a name="l00415"></a>00415 <span class="keyword"></span>{ <a name="l00416"></a>00416 <span class="keywordflow">if</span> (!loc) <a name="l00417"></a>00417 const_cast<Window*>(<span class="keyword">this</span>)->loc = <span class="keyword">new</span> <a class="code" href="classKJS_1_1Window.html#1c46ed5f0dbf3bed2e42c3f754816fce">Location</a>(m_frame); <a name="l00418"></a>00418 <span class="keywordflow">return</span> loc; <a name="l00419"></a>00419 } <a name="l00420"></a>00420 <a name="l00421"></a><a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">00421</a> ObjectImp* <a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">Window::frames</a>( ExecState* exec )<span class="keyword"> const</span> <a name="l00422"></a>00422 <span class="keyword"></span>{ <a name="l00423"></a>00423 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l00424"></a>00424 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l00425"></a>00425 <span class="keywordflow">return</span> m_frames ? m_frames : <a name="l00426"></a>00426 (const_cast<Window*>(<span class="keyword">this</span>)->m_frames = <span class="keyword">new</span> FrameArray(exec, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>)); <a name="l00427"></a>00427 <span class="keywordflow">return</span> 0L; <a name="l00428"></a>00428 } <a name="l00429"></a>00429 <a name="l00430"></a>00430 <span class="comment">// reference our special objects during garbage collection</span> <a name="l00431"></a><a class="code" href="classKJS_1_1Window.html#f335501a1feede9cdc6ceb16ef7df379">00431</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#f335501a1feede9cdc6ceb16ef7df379">Window::mark</a>() <a name="l00432"></a>00432 { <a name="l00433"></a>00433 ObjectImp::mark(); <a name="l00434"></a>00434 <span class="keywordflow">if</span> (screen && !screen->marked()) <a name="l00435"></a>00435 screen->mark(); <a name="l00436"></a>00436 <span class="keywordflow">if</span> (history && !history->marked()) <a name="l00437"></a>00437 history->mark(); <a name="l00438"></a>00438 <span class="keywordflow">if</span> (external && !external->marked()) <a name="l00439"></a>00439 external->mark(); <a name="l00440"></a>00440 <span class="keywordflow">if</span> (m_frames && !m_frames->marked()) <a name="l00441"></a>00441 m_frames->mark(); <a name="l00442"></a>00442 <span class="comment">//kdDebug(6070) << "Window::mark " << this << " marking loc=" << loc << endl;</span> <a name="l00443"></a>00443 <span class="keywordflow">if</span> (loc && !loc->marked()) <a name="l00444"></a>00444 loc->mark(); <a name="l00445"></a>00445 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a>) <a name="l00446"></a>00446 <a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a>-><a class="code" href="classKJS_1_1WindowQObject.html#4ab57ed8691e6084692c15201b58bcbf">mark</a>(); <a name="l00447"></a>00447 } <a name="l00448"></a>00448 <a name="l00449"></a><a class="code" href="classKJS_1_1Window.html#328f0552e7e6d1fa8e15ed0b1be16b75">00449</a> <span class="keywordtype">bool</span> <a class="code" href="classKJS_1_1Window.html#328f0552e7e6d1fa8e15ed0b1be16b75">Window::hasProperty</a>(ExecState *exec, <span class="keyword">const</span> Identifier &p)<span class="keyword"> const</span> <a name="l00450"></a>00450 <span class="keyword"></span>{ <a name="l00451"></a>00451 <span class="comment">// we don't want any operations on a closed window</span> <a name="l00452"></a>00452 <span class="keywordflow">if</span> (m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() || m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) <a name="l00453"></a>00453 <span class="keywordflow">return</span> ( p == <span class="stringliteral">"closed"</span> ); <a name="l00454"></a>00454 <a name="l00455"></a>00455 <span class="keywordflow">if</span> (ObjectImp::hasProperty(exec, p)) <a name="l00456"></a>00456 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00457"></a>00457 <a name="l00458"></a>00458 <span class="keywordflow">if</span> (Lookup::findEntry(&<a class="code" href="namespaceKJS.html#722ab173bd6b7a0dcdc9cfcd18e1922e">WindowTable</a>, p)) <a name="l00459"></a>00459 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00460"></a>00460 <a name="l00461"></a>00461 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l00462"></a>00462 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l00463"></a>00463 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l00464"></a>00464 <a name="l00465"></a>00465 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> q = p.qstring(); <a name="l00466"></a>00466 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->findFramePart(p.qstring())) <a name="l00467"></a>00467 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00468"></a>00468 <span class="comment">// allow window[1] or parent[1] etc. (#56983)</span> <a name="l00469"></a>00469 <span class="keywordtype">bool</span> ok; <a name="l00470"></a>00470 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = p.toArrayIndex(&ok); <a name="l00471"></a>00471 <span class="keywordflow">if</span> (ok) { <a name="l00472"></a>00472 <a class="codeRef" doxygen="qt.tag:" href="qptrlist.html">QPtrList<KParts::ReadOnlyPart></a> <a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">frames</a> = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->frames(); <a name="l00473"></a>00473 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = <a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">frames</a>.count(); <a name="l00474"></a>00474 <span class="keywordflow">if</span> (i < len) <a name="l00475"></a>00475 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00476"></a>00476 } <a name="l00477"></a>00477 <a name="l00478"></a>00478 <span class="comment">// allow shortcuts like 'Image1' instead of document.images.Image1</span> <a name="l00479"></a>00479 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document().isHTMLDocument()) { <span class="comment">// might be XML</span> <a name="l00480"></a>00480 <a class="code" href="classDOM_1_1HTMLDocument.html">DOM::HTMLDocument</a> doc = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->htmlDocument(); <a name="l00481"></a>00481 <span class="comment">// Keep in sync with tryGet</span> <a name="l00482"></a>00482 <a name="l00483"></a>00483 <span class="keywordflow">if</span> (static_cast<DOM::DocumentImpl*>(doc.handle())->underDocNamedCache().get(p.qstring())) <a name="l00484"></a>00484 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l00485"></a>00485 <a name="l00486"></a>00486 <span class="keywordflow">return</span> !doc.getElementById(p.string()).isNull(); <a name="l00487"></a>00487 } <a name="l00488"></a>00488 <a name="l00489"></a>00489 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l00490"></a>00490 } <a name="l00491"></a>00491 <a name="l00492"></a><a class="code" href="classKJS_1_1Window.html#ca093715050915072a60d05ad73650f0">00492</a> UString <a class="code" href="classKJS_1_1Window.html#ca093715050915072a60d05ad73650f0">Window::toString</a>(ExecState *)<span class="keyword"> const</span> <a name="l00493"></a>00493 <span class="keyword"></span>{ <a name="l00494"></a>00494 <span class="keywordflow">return</span> <span class="stringliteral">"[object Window]"</span>; <a name="l00495"></a>00495 } <a name="l00496"></a>00496 <a name="l00497"></a><a class="code" href="classKJS_1_1Window.html#8f752d74ac5eb435bc38a0c05c635429">00497</a> Value <a class="code" href="classKJS_1_1Window.html#8f752d74ac5eb435bc38a0c05c635429">Window::get</a>(ExecState *exec, <span class="keyword">const</span> Identifier &p)<span class="keyword"> const</span> <a name="l00498"></a>00498 <span class="keyword"></span>{ <a name="l00499"></a>00499 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l00500"></a>00500 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window("</span><<<span class="keyword">this</span><<<span class="stringliteral">")::get "</span> << p.qstring() << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00501"></a>00501 <span class="preprocessor">#endif</span> <a name="l00502"></a>00502 <span class="preprocessor"></span> <span class="comment">// we don't want any operations on a closed window</span> <a name="l00503"></a>00503 <span class="keywordflow">if</span> (m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() || m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) { <a name="l00504"></a>00504 <span class="keywordflow">if</span> ( p == <span class="stringliteral">"closed"</span> ) <a name="l00505"></a>00505 <span class="keywordflow">return</span> Boolean( <span class="keyword">true</span> ); <a name="l00506"></a>00506 <span class="keywordflow">return</span> Undefined(); <a name="l00507"></a>00507 } <a name="l00508"></a>00508 <a name="l00509"></a>00509 <span class="comment">// Look for overrides first</span> <a name="l00510"></a>00510 ValueImp *val = getDirect(p); <a name="l00511"></a>00511 <span class="keywordflow">if</span> (val) { <a name="l00512"></a>00512 <span class="comment">//kdDebug(6070) << "Window::get found dynamic property '" << p.ascii() << "'" << endl;</span> <a name="l00513"></a>00513 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) ? Value(val) : Undefined(); <a name="l00514"></a>00514 } <a name="l00515"></a>00515 <a name="l00516"></a>00516 <span class="keyword">const</span> HashEntry* entry = Lookup::findEntry(&<a class="code" href="namespaceKJS.html#722ab173bd6b7a0dcdc9cfcd18e1922e">WindowTable</a>, p); <a name="l00517"></a>00517 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l00518"></a>00518 <a name="l00519"></a>00519 <span class="comment">// properties that work on all windows</span> <a name="l00520"></a>00520 <span class="keywordflow">if</span> (entry) { <a name="l00521"></a>00521 <span class="comment">// ReadOnlyPart first</span> <a name="l00522"></a>00522 <span class="keywordflow">switch</span>(entry->value) { <a name="l00523"></a>00523 <span class="keywordflow">case</span> Closed: <a name="l00524"></a>00524 <span class="keywordflow">return</span> Boolean( <span class="keyword">false</span> ); <a name="l00525"></a>00525 <span class="keywordflow">case</span> _Location: <a name="l00526"></a>00526 <span class="comment">// No isSafeScript test here, we must be able to _set_ location.href (#49819)</span> <a name="l00527"></a>00527 <span class="keywordflow">return</span> Value(<a class="code" href="classKJS_1_1Window.html#8d7aaa4b0b821a30186ebc64c62b1806">location</a>()); <a name="l00528"></a>00528 <span class="keywordflow">case</span> _Window: <a name="l00529"></a>00529 <span class="keywordflow">case</span> Self: <a name="l00530"></a>00530 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">retrieve</a>(m_frame->m_part); <a name="l00531"></a>00531 <span class="keywordflow">default</span>: <a name="l00532"></a>00532 <span class="keywordflow">break</span>; <a name="l00533"></a>00533 } <a name="l00534"></a>00534 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l00535"></a>00535 <span class="keywordflow">return</span> Undefined(); <a name="l00536"></a>00536 <span class="comment">// KHTMLPart next</span> <a name="l00537"></a>00537 <span class="keywordflow">switch</span>(entry->value) { <a name="l00538"></a>00538 <span class="keywordflow">case</span> Frames: <a name="l00539"></a>00539 <span class="keywordflow">return</span> Value(<a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">frames</a>(exec)); <a name="l00540"></a>00540 <span class="keywordflow">case</span> Opener: <a name="l00541"></a>00541 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->opener()) <a name="l00542"></a>00542 <span class="keywordflow">return</span> Null(); <span class="comment">// ### a null Window might be better, but == null</span> <a name="l00543"></a>00543 <span class="keywordflow">else</span> <span class="comment">// doesn't work yet</span> <a name="l00544"></a>00544 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">retrieve</a>(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->opener()); <a name="l00545"></a>00545 <span class="keywordflow">case</span> Parent: <a name="l00546"></a>00546 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">retrieve</a>(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->parentPart() ? <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->parentPart() : (<a class="code" href="classKHTMLPart.html">KHTMLPart</a>*)<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>); <a name="l00547"></a>00547 <span class="keywordflow">case</span> Top: { <a name="l00548"></a>00548 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *p = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>; <a name="l00549"></a>00549 <span class="keywordflow">while</span> (p-><a class="code" href="classKHTMLPart.html#4ab62fae7ea81eafb62c1ae13c13e401">parentPart</a>()) <a name="l00550"></a>00550 p = p-><a class="code" href="classKHTMLPart.html#4ab62fae7ea81eafb62c1ae13c13e401">parentPart</a>(); <a name="l00551"></a>00551 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">retrieve</a>(p); <a name="l00552"></a>00552 } <a name="l00553"></a>00553 <span class="keywordflow">case</span> Alert: <a name="l00554"></a>00554 <span class="keywordflow">case</span> Confirm: <a name="l00555"></a>00555 <span class="keywordflow">case</span> Prompt: <a name="l00556"></a>00556 <span class="keywordflow">case</span> Open: <a name="l00557"></a>00557 <span class="keywordflow">case</span> Close: <a name="l00558"></a>00558 <span class="keywordflow">case</span> Focus: <a name="l00559"></a>00559 <span class="keywordflow">case</span> Blur: <a name="l00560"></a>00560 <span class="keywordflow">case</span> AToB: <a name="l00561"></a>00561 <span class="keywordflow">case</span> BToA: <a name="l00562"></a>00562 <span class="keywordflow">case</span> GetComputedStyle: <a name="l00563"></a>00563 <span class="keywordflow">return</span> lookupOrCreateFunction<WindowFunc>(exec,p,<span class="keyword">this</span>,entry->value,entry->params,entry->attr); <a name="l00564"></a>00564 <span class="keywordflow">default</span>: <a name="l00565"></a>00565 <span class="keywordflow">break</span>; <a name="l00566"></a>00566 } <a name="l00567"></a>00567 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) { <a name="l00568"></a>00568 <span class="comment">// not a KHTMLPart</span> <a name="l00569"></a>00569 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> rvalue; <a name="l00570"></a>00570 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1LiveConnectExtension.html#8dfff0d5feb20316c714179c9eda9a9c">KParts::LiveConnectExtension::Type</a> rtype; <a name="l00571"></a>00571 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> robjid; <a name="l00572"></a>00572 <span class="keywordflow">if</span> (m_frame->m_liveconnect && <a name="l00573"></a>00573 <a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) && <a name="l00574"></a>00574 m_frame->m_liveconnect->get(0, p.qstring(), rtype, robjid, rvalue)) <a name="l00575"></a>00575 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#e1ced0a9b345305be84a3b4b76ba4b20">getLiveConnectValue</a>(m_frame->m_liveconnect, p.qstring(), rtype, rvalue, robjid); <a name="l00576"></a>00576 <span class="keywordflow">return</span> Undefined(); <a name="l00577"></a>00577 } <a name="l00578"></a>00578 <span class="comment">// properties that only work on safe windows</span> <a name="l00579"></a>00579 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) && entry) <a name="l00580"></a>00580 { <a name="l00581"></a>00581 <span class="comment">//kdDebug(6070) << "token: " << entry->value << endl;</span> <a name="l00582"></a>00582 <span class="keywordflow">switch</span>( entry->value ) { <a name="l00583"></a>00583 <span class="keywordflow">case</span> Crypto: <a name="l00584"></a>00584 <span class="keywordflow">return</span> Undefined(); <span class="comment">// ###</span> <a name="l00585"></a>00585 <span class="keywordflow">case</span> DefaultStatus: <a name="l00586"></a>00586 <span class="keywordflow">return</span> String(UString(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jsDefaultStatusBarText())); <a name="l00587"></a>00587 <span class="keywordflow">case</span> Status: <a name="l00588"></a>00588 <span class="keywordflow">return</span> String(UString(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jsStatusBarText())); <a name="l00589"></a>00589 <span class="keywordflow">case</span> Document: <a name="l00590"></a>00590 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document().isNull()) { <a name="l00591"></a>00591 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Document.write: adding <HTML><BODY> to create document"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00592"></a>00592 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->begin(); <a name="l00593"></a>00593 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->write(<span class="stringliteral">"<HTML><BODY>"</span>); <a name="l00594"></a>00594 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->end(); <a name="l00595"></a>00595 } <a name="l00596"></a>00596 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#54231f4fbfeb35ec709c9a16c8677691">getDOMNode</a>(exec,<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document()); <a name="l00597"></a>00597 <span class="keywordflow">case</span> FrameElement: <a name="l00598"></a>00598 <span class="keywordflow">if</span> (m_frame->m_frame) <a name="l00599"></a>00599 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#54231f4fbfeb35ec709c9a16c8677691">getDOMNode</a>(exec,m_frame->m_frame->element()); <a name="l00600"></a>00600 <span class="keywordflow">else</span> <a name="l00601"></a>00601 <span class="keywordflow">return</span> Undefined(); <a name="l00602"></a>00602 <span class="keywordflow">case</span> Node: <a name="l00603"></a>00603 <span class="keywordflow">return</span> NodeConstructor::self(exec); <a name="l00604"></a>00604 <span class="keywordflow">case</span> Range: <a name="l00605"></a>00605 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#0666f357f42e83263ca28bdc92cebc55">getRangeConstructor</a>(exec); <a name="l00606"></a>00606 <span class="keywordflow">case</span> NodeFilter: <a name="l00607"></a>00607 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#5eec4f2395f6422c98f72e4420b09377">getNodeFilterConstructor</a>(exec); <a name="l00608"></a>00608 <span class="keywordflow">case</span> DOMException: <a name="l00609"></a>00609 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#e96907be3d9226855cc8e5f48a33a40a">getDOMExceptionConstructor</a>(exec); <a name="l00610"></a>00610 <span class="keywordflow">case</span> CSSRule: <a name="l00611"></a>00611 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#1865fc8074a46e2f0745dff492718ee5">getCSSRuleConstructor</a>(exec); <a name="l00612"></a>00612 <span class="keywordflow">case</span> ElementCtor: <a name="l00613"></a>00613 <span class="keywordflow">case</span> HTMLElementCtor: <span class="comment">//Hack -- we don't have a separate prototype here</span> <a name="l00614"></a>00614 <span class="keywordflow">return</span> ElementPseudoCtor::self(exec); <a name="l00615"></a>00615 <span class="keywordflow">case</span> DocumentCtor: <a name="l00616"></a>00616 <span class="keywordflow">return</span> DocumentPseudoCtor::self(exec); <a name="l00617"></a>00617 <span class="keywordflow">case</span> HTMLDocumentCtor: <a name="l00618"></a>00618 <span class="keywordflow">return</span> HTMLDocumentPseudoCtor::self(exec); <a name="l00619"></a>00619 <span class="keywordflow">case</span> CSSStyleDeclarationCtor: <a name="l00620"></a>00620 <span class="keywordflow">return</span> CSSStyleDeclarationPseudoCtor::self(exec); <a name="l00621"></a>00621 <span class="keywordflow">case</span> EventCtor: <a name="l00622"></a>00622 <span class="keywordflow">return</span> EventConstructor::self(exec); <a name="l00623"></a>00623 <span class="keywordflow">case</span> MutationEventCtor: <a name="l00624"></a>00624 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#225cef54420d513072d139e047905128">getMutationEventConstructor</a>(exec); <a name="l00625"></a>00625 <span class="keywordflow">case</span> KeyboardEventCtor: <a name="l00626"></a>00626 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#34a3200d930ce99015e708dbb1c12af4">getKeyboardEventConstructor</a>(exec); <a name="l00627"></a>00627 <span class="keywordflow">case</span> EventExceptionCtor: <a name="l00628"></a>00628 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#30c269616fb0143894b9772fd1d24797">getEventExceptionConstructor</a>(exec); <a name="l00629"></a>00629 <span class="keywordflow">case</span> _History: <a name="l00630"></a>00630 <span class="keywordflow">return</span> Value(history ? history : <a name="l00631"></a>00631 (const_cast<Window*>(<span class="keyword">this</span>)->history = <span class="keyword">new</span> History(exec,<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>))); <a name="l00632"></a>00632 <a name="l00633"></a>00633 <span class="keywordflow">case</span> _External: <a name="l00634"></a>00634 <span class="keywordflow">return</span> Value(external ? external : <a name="l00635"></a>00635 (const_cast<Window*>(<span class="keyword">this</span>)->external = <span class="keyword">new</span> External(exec,<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>))); <a name="l00636"></a>00636 <a name="l00637"></a>00637 <span class="keywordflow">case</span> Event: <a name="l00638"></a>00638 <span class="keywordflow">if</span> (m_evt) <a name="l00639"></a>00639 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#569756c8eb900571b2bd5623e61eea7f">getDOMEvent</a>(exec,*m_evt); <a name="l00640"></a>00640 <span class="keywordflow">else</span> { <a name="l00641"></a>00641 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l00642"></a>00642 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"WARNING: window("</span> << <span class="keyword">this</span> << <span class="stringliteral">","</span> << <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#name">name</a>() << <span class="stringliteral">").event, no event!"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00643"></a>00643 <span class="preprocessor">#endif</span> <a name="l00644"></a>00644 <span class="preprocessor"></span> <span class="keywordflow">return</span> Undefined(); <a name="l00645"></a>00645 } <a name="l00646"></a>00646 <span class="keywordflow">case</span> InnerHeight: <a name="l00647"></a>00647 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()) <a name="l00648"></a>00648 <span class="keywordflow">return</span> Undefined(); <a name="l00649"></a>00649 khtml::RenderWidget::flushWidgetResizes(); <span class="comment">// make sure frames have their final size</span> <a name="l00650"></a>00650 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->visibleHeight()); <a name="l00651"></a>00651 <span class="keywordflow">case</span> InnerWidth: <a name="l00652"></a>00652 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()) <a name="l00653"></a>00653 <span class="keywordflow">return</span> Undefined(); <a name="l00654"></a>00654 khtml::RenderWidget::flushWidgetResizes(); <span class="comment">// make sure frames have their final size</span> <a name="l00655"></a>00655 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->visibleWidth()); <a name="l00656"></a>00656 <span class="keywordflow">case</span> Length: <a name="l00657"></a>00657 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->frames().count()); <a name="l00658"></a>00658 <span class="keywordflow">case</span> Name: <a name="l00659"></a>00659 <span class="keywordflow">return</span> String(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#name">name</a>()); <a name="l00660"></a>00660 <span class="keywordflow">case</span> SideBar: <a name="l00661"></a>00661 <span class="keywordflow">return</span> Value(<span class="keyword">new</span> <a class="code" href="classKJS_1_1MozillaSidebarExtension.html">MozillaSidebarExtension</a>(exec, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>)); <a name="l00662"></a>00662 <span class="keywordflow">case</span> _Navigator: <a name="l00663"></a>00663 <span class="keywordflow">case</span> ClientInformation: { <a name="l00664"></a>00664 <span class="comment">// Store the navigator in the object so we get the same one each time.</span> <a name="l00665"></a>00665 Value nav( <span class="keyword">new</span> <a class="code" href="classKJS_1_1Navigator.html">Navigator</a>(exec, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) ); <a name="l00666"></a>00666 const_cast<Window *>(<span class="keyword">this</span>)-><a class="code" href="classKJS_1_1Window.html#8d259d59ce749ad706b54d02295b65ab">put</a>(exec, <span class="stringliteral">"navigator"</span>, nav, DontDelete|ReadOnly|Internal); <a name="l00667"></a>00667 const_cast<Window *>(<span class="keyword">this</span>)-><a class="code" href="classKJS_1_1Window.html#8d259d59ce749ad706b54d02295b65ab">put</a>(exec, <span class="stringliteral">"clientInformation"</span>, nav, DontDelete|ReadOnly|Internal); <a name="l00668"></a>00668 <span class="keywordflow">return</span> nav; <a name="l00669"></a>00669 } <a name="l00670"></a>00670 <span class="preprocessor">#ifdef Q_WS_QWS</span> <a name="l00671"></a>00671 <span class="preprocessor"></span> <span class="keywordflow">case</span> _Konqueror: { <a name="l00672"></a>00672 Value k( <span class="keyword">new</span> Konqueror(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) ); <a name="l00673"></a>00673 const_cast<Window *>(<span class="keyword">this</span>)-><a class="code" href="classKJS_1_1Window.html#8d259d59ce749ad706b54d02295b65ab">put</a>(exec, <span class="stringliteral">"konqueror"</span>, k, DontDelete|ReadOnly|Internal); <a name="l00674"></a>00674 <span class="keywordflow">return</span> k; <a name="l00675"></a>00675 } <a name="l00676"></a>00676 <span class="preprocessor">#endif</span> <a name="l00677"></a>00677 <span class="preprocessor"></span> <span class="keywordflow">case</span> OffscreenBuffering: <a name="l00678"></a>00678 <span class="keywordflow">return</span> Boolean(<span class="keyword">true</span>); <a name="l00679"></a>00679 <span class="keywordflow">case</span> OuterHeight: <a name="l00680"></a>00680 <span class="keywordflow">case</span> OuterWidth: <a name="l00681"></a>00681 { <a name="l00682"></a>00682 <span class="preprocessor">#if defined Q_WS_X11 && ! defined K_WS_QTONLY</span> <a name="l00683"></a>00683 <span class="preprocessor"></span> <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1Part.html#2d2efd56fe23904104c48dc56371c03d">widget</a>()) <a name="l00684"></a>00684 <span class="keywordflow">return</span> Number(0); <a name="l00685"></a>00685 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWin_1_1WindowInfo.html">KWin::WindowInfo</a> inf = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWin.html#8ce591daa3996c2bfb98b8de6c82b79a">KWin::windowInfo</a>(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1Part.html#2d2efd56fe23904104c48dc56371c03d">widget</a>()-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#topLevelWidget">topLevelWidget</a>()->winId()); <a name="l00686"></a>00686 <span class="keywordflow">return</span> Number(entry->value == OuterHeight ? <a name="l00687"></a>00687 inf.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWin_1_1WindowInfo.html#e226722f0eff11325f2d3bda2f773be4">geometry</a>().<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>() : inf.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWin_1_1WindowInfo.html#e226722f0eff11325f2d3bda2f773be4">geometry</a>().<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>()); <a name="l00688"></a>00688 <span class="preprocessor">#else</span> <a name="l00689"></a>00689 <span class="preprocessor"></span> <span class="keywordflow">return</span> Number(entry->value == OuterHeight ? <a name="l00690"></a>00690 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->height() : <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->width()); <a name="l00691"></a>00691 <span class="preprocessor">#endif</span> <a name="l00692"></a>00692 <span class="preprocessor"></span> } <a name="l00693"></a>00693 <span class="keywordflow">case</span> PageXOffset: <a name="l00694"></a>00694 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->contentsX()); <a name="l00695"></a>00695 <span class="keywordflow">case</span> PageYOffset: <a name="l00696"></a>00696 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->contentsY()); <a name="l00697"></a>00697 <span class="keywordflow">case</span> Personalbar: <a name="l00698"></a>00698 <span class="keywordflow">return</span> Undefined(); <span class="comment">// ###</span> <a name="l00699"></a>00699 <span class="keywordflow">case</span> ScreenLeft: <a name="l00700"></a>00700 <span class="keywordflow">case</span> ScreenX: { <a name="l00701"></a>00701 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()) <a name="l00702"></a>00702 <span class="keywordflow">return</span> Undefined(); <a name="l00703"></a>00703 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> sg = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobalSettings.html#63f7c20327cdb7972e2aff9b765b8985">KGlobalSettings::desktopGeometry</a>(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()); <a name="l00704"></a>00704 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->mapToGlobal(<a class="codeRef" doxygen="qt.tag:" href="qpoint.html">QPoint</a>(0,0)).x() + sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>()); <a name="l00705"></a>00705 } <a name="l00706"></a>00706 <span class="keywordflow">case</span> ScreenTop: <a name="l00707"></a>00707 <span class="keywordflow">case</span> ScreenY: { <a name="l00708"></a>00708 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()) <a name="l00709"></a>00709 <span class="keywordflow">return</span> Undefined(); <a name="l00710"></a>00710 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> sg = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobalSettings.html#63f7c20327cdb7972e2aff9b765b8985">KGlobalSettings::desktopGeometry</a>(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()); <a name="l00711"></a>00711 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->mapToGlobal(<a class="codeRef" doxygen="qt.tag:" href="qpoint.html">QPoint</a>(0,0)).y() + sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>()); <a name="l00712"></a>00712 } <a name="l00713"></a>00713 <span class="keywordflow">case</span> ScrollX: { <a name="l00714"></a>00714 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()) <a name="l00715"></a>00715 <span class="keywordflow">return</span> Undefined(); <a name="l00716"></a>00716 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->contentsX()); <a name="l00717"></a>00717 } <a name="l00718"></a>00718 <span class="keywordflow">case</span> ScrollY: { <a name="l00719"></a>00719 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()) <a name="l00720"></a>00720 <span class="keywordflow">return</span> Undefined(); <a name="l00721"></a>00721 <span class="keywordflow">return</span> Number(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view()->contentsY()); <a name="l00722"></a>00722 } <a name="l00723"></a>00723 <span class="keywordflow">case</span> Scrollbars: <a name="l00724"></a>00724 <span class="keywordflow">return</span> Undefined(); <span class="comment">// ###</span> <a name="l00725"></a>00725 <span class="keywordflow">case</span> _Screen: <a name="l00726"></a>00726 <span class="keywordflow">return</span> Value(screen ? screen : <a name="l00727"></a>00727 (const_cast<Window*>(<span class="keyword">this</span>)->screen = <span class="keyword">new</span> <a class="code" href="classKJS_1_1Screen.html">Screen</a>(exec))); <a name="l00728"></a>00728 <span class="keywordflow">case</span> Image: <a name="l00729"></a>00729 <span class="keywordflow">return</span> Value(<span class="keyword">new</span> <a class="code" href="classKJS_1_1ImageConstructorImp.html">ImageConstructorImp</a>(exec, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document())); <a name="l00730"></a>00730 <span class="keywordflow">case</span> Option: <a name="l00731"></a>00731 <span class="keywordflow">return</span> Value(<span class="keyword">new</span> <a class="code" href="classKJS_1_1OptionConstructorImp.html">OptionConstructorImp</a>(exec, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document())); <a name="l00732"></a>00732 <span class="keywordflow">case</span> <a class="code" href="classKJS_1_1XMLHttpRequest.html">XMLHttpRequest</a>: <a name="l00733"></a>00733 <span class="keywordflow">return</span> Value(<span class="keyword">new</span> <a class="code" href="classKJS_1_1XMLHttpRequestConstructorImp.html">XMLHttpRequestConstructorImp</a>(exec, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document())); <a name="l00734"></a>00734 <span class="keywordflow">case</span> <a class="code" href="classKJS_1_1XMLSerializer.html">XMLSerializer</a>: <a name="l00735"></a>00735 <span class="keywordflow">return</span> Value(<span class="keyword">new</span> <a class="code" href="classKJS_1_1XMLSerializerConstructorImp.html">XMLSerializerConstructorImp</a>(exec)); <a name="l00736"></a>00736 <span class="keywordflow">case</span> <a class="code" href="classKJS_1_1DOMParser.html">DOMParser</a>: <a name="l00737"></a>00737 <span class="keywordflow">return</span> Value(<span class="keyword">new</span> <a class="code" href="classKJS_1_1DOMParserConstructorImp.html">DOMParserConstructorImp</a>(exec, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->xmlDocImpl())); <a name="l00738"></a>00738 <span class="keywordflow">case</span> Scroll: <span class="comment">// compatibility</span> <a name="l00739"></a>00739 <span class="keywordflow">case</span> ScrollBy: <a name="l00740"></a>00740 <span class="keywordflow">case</span> ScrollTo: <a name="l00741"></a>00741 <span class="keywordflow">case</span> MoveBy: <a name="l00742"></a>00742 <span class="keywordflow">case</span> MoveTo: <a name="l00743"></a>00743 <span class="keywordflow">case</span> ResizeBy: <a name="l00744"></a>00744 <span class="keywordflow">case</span> ResizeTo: <a name="l00745"></a>00745 <span class="keywordflow">case</span> CaptureEvents: <a name="l00746"></a>00746 <span class="keywordflow">case</span> ReleaseEvents: <a name="l00747"></a>00747 <span class="keywordflow">case</span> AddEventListener: <a name="l00748"></a>00748 <span class="keywordflow">case</span> RemoveEventListener: <a name="l00749"></a>00749 <span class="keywordflow">case</span> SetTimeout: <a name="l00750"></a>00750 <span class="keywordflow">case</span> ClearTimeout: <a name="l00751"></a>00751 <span class="keywordflow">case</span> SetInterval: <a name="l00752"></a>00752 <span class="keywordflow">case</span> ClearInterval: <a name="l00753"></a>00753 <span class="keywordflow">case</span> Print: <a name="l00754"></a>00754 <span class="keywordflow">return</span> lookupOrCreateFunction<WindowFunc>(exec,p,<span class="keyword">this</span>,entry->value,entry->params,entry->attr); <a name="l00755"></a>00755 <span class="comment">// IE extension</span> <a name="l00756"></a>00756 <span class="keywordflow">case</span> Navigate: <a name="l00757"></a>00757 <span class="comment">// Disabled in NS-compat mode. Supported by default - can't hurt, unless someone uses</span> <a name="l00758"></a>00758 <span class="comment">// if (navigate) to test for IE (unlikely).</span> <a name="l00759"></a>00759 <span class="keywordflow">if</span> ( exec->interpreter()->compatMode() == Interpreter::NetscapeCompat ) <a name="l00760"></a>00760 <span class="keywordflow">return</span> Undefined(); <a name="l00761"></a>00761 <span class="keywordflow">return</span> lookupOrCreateFunction<WindowFunc>(exec,p,<span class="keyword">this</span>,entry->value,entry->params,entry->attr); <a name="l00762"></a>00762 <span class="keywordflow">case</span> Onabort: <a name="l00763"></a>00763 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::ABORT_EVENT); <a name="l00764"></a>00764 <span class="keywordflow">case</span> Onblur: <a name="l00765"></a>00765 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::BLUR_EVENT); <a name="l00766"></a>00766 <span class="keywordflow">case</span> Onchange: <a name="l00767"></a>00767 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::CHANGE_EVENT); <a name="l00768"></a>00768 <span class="keywordflow">case</span> Onclick: <a name="l00769"></a>00769 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::KHTML_ECMA_CLICK_EVENT); <a name="l00770"></a>00770 <span class="keywordflow">case</span> Ondblclick: <a name="l00771"></a>00771 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::KHTML_ECMA_DBLCLICK_EVENT); <a name="l00772"></a>00772 <span class="keywordflow">case</span> Ondragdrop: <a name="l00773"></a>00773 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::KHTML_DRAGDROP_EVENT); <a name="l00774"></a>00774 <span class="keywordflow">case</span> Onerror: <a name="l00775"></a>00775 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::ERROR_EVENT); <a name="l00776"></a>00776 <span class="keywordflow">case</span> Onfocus: <a name="l00777"></a>00777 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::FOCUS_EVENT); <a name="l00778"></a>00778 <span class="keywordflow">case</span> Onkeydown: <a name="l00779"></a>00779 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::KEYDOWN_EVENT); <a name="l00780"></a>00780 <span class="keywordflow">case</span> Onkeypress: <a name="l00781"></a>00781 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::KEYPRESS_EVENT); <a name="l00782"></a>00782 <span class="keywordflow">case</span> Onkeyup: <a name="l00783"></a>00783 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::KEYUP_EVENT); <a name="l00784"></a>00784 <span class="keywordflow">case</span> Onload: <a name="l00785"></a>00785 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::LOAD_EVENT); <a name="l00786"></a>00786 <span class="keywordflow">case</span> Onmousedown: <a name="l00787"></a>00787 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::MOUSEDOWN_EVENT); <a name="l00788"></a>00788 <span class="keywordflow">case</span> Onmousemove: <a name="l00789"></a>00789 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::MOUSEMOVE_EVENT); <a name="l00790"></a>00790 <span class="keywordflow">case</span> Onmouseout: <a name="l00791"></a>00791 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::MOUSEOUT_EVENT); <a name="l00792"></a>00792 <span class="keywordflow">case</span> Onmouseover: <a name="l00793"></a>00793 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::MOUSEOVER_EVENT); <a name="l00794"></a>00794 <span class="keywordflow">case</span> Onmouseup: <a name="l00795"></a>00795 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::MOUSEUP_EVENT); <a name="l00796"></a>00796 <span class="keywordflow">case</span> Onmove: <a name="l00797"></a>00797 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::KHTML_MOVE_EVENT); <a name="l00798"></a>00798 <span class="keywordflow">case</span> Onreset: <a name="l00799"></a>00799 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::RESET_EVENT); <a name="l00800"></a>00800 <span class="keywordflow">case</span> Onresize: <a name="l00801"></a>00801 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::RESIZE_EVENT); <a name="l00802"></a>00802 <span class="keywordflow">case</span> Onselect: <a name="l00803"></a>00803 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::SELECT_EVENT); <a name="l00804"></a>00804 <span class="keywordflow">case</span> Onsubmit: <a name="l00805"></a>00805 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::SUBMIT_EVENT); <a name="l00806"></a>00806 <span class="keywordflow">case</span> Onunload: <a name="l00807"></a>00807 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">getListener</a>(exec,DOM::EventImpl::UNLOAD_EVENT); <a name="l00808"></a>00808 } <a name="l00809"></a>00809 } <a name="l00810"></a>00810 <a name="l00811"></a>00811 <span class="comment">// doing the remainder of ObjectImp::get() that is not covered by</span> <a name="l00812"></a>00812 <span class="comment">// the getDirect() call above.</span> <a name="l00813"></a>00813 <span class="comment">// #### guessed position. move further up or down?</span> <a name="l00814"></a>00814 Object proto = Object::dynamicCast(prototype()); <a name="l00815"></a>00815 assert(proto.isValid()); <a name="l00816"></a>00816 <span class="keywordflow">if</span> (p == specialPrototypePropertyName) <a name="l00817"></a>00817 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) ? Value(proto) : Undefined(); <a name="l00818"></a>00818 Value val2 = proto.get(exec, p); <a name="l00819"></a>00819 <span class="keywordflow">if</span> (!val2.isA(UndefinedType)) { <a name="l00820"></a>00820 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) ? val2 : Undefined(); <a name="l00821"></a>00821 } <a name="l00822"></a>00822 <a name="l00823"></a>00823 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *rop = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->findFramePart( p.qstring() ); <a name="l00824"></a>00824 <span class="keywordflow">if</span> (rop) <a name="l00825"></a>00825 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">retrieve</a>(rop); <a name="l00826"></a>00826 <a name="l00827"></a>00827 <span class="comment">// allow window[1] or parent[1] etc. (#56983)</span> <a name="l00828"></a>00828 <span class="keywordtype">bool</span> ok; <a name="l00829"></a>00829 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = p.toArrayIndex(&ok); <a name="l00830"></a>00830 <span class="keywordflow">if</span> (ok) { <a name="l00831"></a>00831 <a class="codeRef" doxygen="qt.tag:" href="qptrlist.html">QPtrList<KParts::ReadOnlyPart></a> <a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">frames</a> = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->frames(); <a name="l00832"></a>00832 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = <a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">frames</a>.count(); <a name="l00833"></a>00833 <span class="keywordflow">if</span> (i < len) { <a name="l00834"></a>00834 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a>* frame = <a class="code" href="classKJS_1_1Window.html#d2c3f73d70162a29b5e9f26e967983ac">frames</a>.at(i); <a name="l00835"></a>00835 <span class="keywordflow">if</span> (frame) <a name="l00836"></a>00836 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(frame); <a name="l00837"></a>00837 } <a name="l00838"></a>00838 } <a name="l00839"></a>00839 <a name="l00840"></a>00840 <span class="comment">//Check for images, forms, objects, etc.</span> <a name="l00841"></a>00841 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document().isHTMLDocument()) { <span class="comment">// might be XML</span> <a name="l00842"></a>00842 DOM::DocumentImpl* docImpl = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->xmlDocImpl(); <a name="l00843"></a>00843 DOM::ElementMappingCache::ItemInfo* <a class="code" href="classKJS_1_1Window.html#6c924fbabb5a750666d50defe2cdd47b">info</a> = docImpl->underDocNamedCache().get(p.qstring()); <a name="l00844"></a>00844 <span class="keywordflow">if</span> (info) { <a name="l00845"></a>00845 <span class="comment">//May be a false positive, but we can try to avoid doing it the hard way in</span> <a name="l00846"></a>00846 <span class="comment">//simpler cases. The trickiness here is that the cache is kept under both</span> <a name="l00847"></a>00847 <span class="comment">//name and id, but we sometimes ignore id for IE compat</span> <a name="l00848"></a>00848 <a class="code" href="classDOM_1_1DOMString.html">DOM::DOMString</a> propertyDOMString = p.string(); <a name="l00849"></a>00849 <span class="keywordflow">if</span> (info->nd && DOM::HTMLMappedNameCollectionImpl::matchesName(info->nd, <a name="l00850"></a>00850 DOM::HTMLCollectionImpl::WINDOW_NAMED_ITEMS, propertyDOMString)) { <a name="l00851"></a>00851 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#54231f4fbfeb35ec709c9a16c8677691">getDOMNode</a>(exec, info->nd); <a name="l00852"></a>00852 } <span class="keywordflow">else</span> { <a name="l00853"></a>00853 <span class="comment">//Can't tell it just like that, so better go through collection and count stuff. This is the slow path...</span> <a name="l00854"></a>00854 <a class="code" href="classDOM_1_1HTMLMappedNameCollection.html">DOM::HTMLMappedNameCollection</a> coll(docImpl, DOM::HTMLCollectionImpl::WINDOW_NAMED_ITEMS, propertyDOMString); <a name="l00855"></a>00855 <a name="l00856"></a>00856 <span class="keywordflow">if</span> (coll.<a class="code" href="classDOM_1_1HTMLCollection.html#451c0100ccdb1104de560028c5437124">length</a>() == 1) <a name="l00857"></a>00857 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#54231f4fbfeb35ec709c9a16c8677691">getDOMNode</a>(exec, coll.<a class="code" href="classDOM_1_1HTMLCollection.html#86c89eae01751a764b74b9edf959dedb">firstItem</a>()); <a name="l00858"></a>00858 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (coll.<a class="code" href="classDOM_1_1HTMLCollection.html#451c0100ccdb1104de560028c5437124">length</a>() > 1) <a name="l00859"></a>00859 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#b6d61a7c7beffbdda640e710b2fcbd29">getHTMLCollection</a>(exec, coll); <a name="l00860"></a>00860 } <a name="l00861"></a>00861 } <a name="l00862"></a>00862 <a class="code" href="classDOM_1_1Element.html">DOM::Element</a> element = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document().getElementById(p.string()); <a name="l00863"></a>00863 <span class="keywordflow">if</span> ( !element.<a class="code" href="classDOM_1_1Node.html#fbf817c4885b063f6672c20c6ec5cb2e">isNull</a>() ) <a name="l00864"></a>00864 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#54231f4fbfeb35ec709c9a16c8677691">getDOMNode</a>(exec, element ); <a name="l00865"></a>00865 } <a name="l00866"></a>00866 <a name="l00867"></a>00867 <span class="comment">// This isn't necessarily a bug. Some code uses if(!window.blah) window.blah=1</span> <a name="l00868"></a>00868 <span class="comment">// But it can also mean something isn't loaded or implemented, hence the WARNING to help grepping.</span> <a name="l00869"></a>00869 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l00870"></a>00870 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"WARNING: Window::get property not found: "</span> << p.qstring() << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00871"></a>00871 <span class="preprocessor">#endif</span> <a name="l00872"></a>00872 <span class="preprocessor"></span> <span class="keywordflow">return</span> Undefined(); <a name="l00873"></a>00873 } <a name="l00874"></a>00874 <a name="l00875"></a><a class="code" href="classKJS_1_1Window.html#8d259d59ce749ad706b54d02295b65ab">00875</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#8d259d59ce749ad706b54d02295b65ab">Window::put</a>(ExecState* exec, <span class="keyword">const</span> Identifier &propertyName, <span class="keyword">const</span> Value &value, <span class="keywordtype">int</span> attr) <a name="l00876"></a>00876 { <a name="l00877"></a>00877 <span class="comment">// we don't want any operations on a closed window</span> <a name="l00878"></a>00878 <span class="keywordflow">if</span> (m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() || m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) { <a name="l00879"></a>00879 <span class="comment">// ### throw exception? allow setting of some props like location?</span> <a name="l00880"></a>00880 <span class="keywordflow">return</span>; <a name="l00881"></a>00881 } <a name="l00882"></a>00882 <a name="l00883"></a>00883 <span class="comment">// Called by an internal KJS call (e.g. InterpreterImp's constructor) ?</span> <a name="l00884"></a>00884 <span class="comment">// If yes, save time and jump directly to ObjectImp.</span> <a name="l00885"></a>00885 <span class="keywordflow">if</span> ( (attr != None && attr != DontDelete) || <a name="l00886"></a>00886 <span class="comment">// Same thing if we have a local override (e.g. "var location")</span> <a name="l00887"></a>00887 ( <a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>( exec ) && ObjectImp::getDirect(propertyName) ) ) <a name="l00888"></a>00888 { <a name="l00889"></a>00889 ObjectImp::put( exec, propertyName, value, attr ); <a name="l00890"></a>00890 <span class="keywordflow">return</span>; <a name="l00891"></a>00891 } <a name="l00892"></a>00892 <a name="l00893"></a>00893 <span class="keyword">const</span> HashEntry* entry = Lookup::findEntry(&<a class="code" href="namespaceKJS.html#722ab173bd6b7a0dcdc9cfcd18e1922e">WindowTable</a>, propertyName); <a name="l00894"></a>00894 <span class="keywordflow">if</span> (entry && !m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() && !m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) <a name="l00895"></a>00895 { <a name="l00896"></a>00896 #ifdef KJS_VERBOSE <a name="l00897"></a>00897 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window("</span><<<span class="keyword">this</span><<<span class="stringliteral">")::put "</span> << propertyName.qstring() << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l00898"></a>00898 <span class="preprocessor">#endif</span> <a name="l00899"></a>00899 <span class="preprocessor"></span> <span class="keywordflow">switch</span>( entry->value) { <a name="l00900"></a>00900 <span class="keywordflow">case</span> _Location: <a name="l00901"></a>00901 <a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, value.toString(exec).qstring(), <span class="keyword">false</span> <span class="comment">/*don't lock history*/</span>); <a name="l00902"></a>00902 <span class="keywordflow">return</span>; <a name="l00903"></a>00903 <span class="keywordflow">default</span>: <a name="l00904"></a>00904 <span class="keywordflow">break</span>; <a name="l00905"></a>00905 } <a name="l00906"></a>00906 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l00907"></a>00907 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) { <a name="l00908"></a>00908 <span class="keywordflow">switch</span>( entry->value ) { <a name="l00909"></a>00909 <span class="keywordflow">case</span> Status: { <a name="l00910"></a>00910 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->settings()->windowStatusPolicy(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html#cb4ef957a59d80168a38c4bf24d0dd11">url</a>().<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#df3ad35581a0ca25ecc16e073f8275ca">host</a>()) <a name="l00911"></a>00911 == KHTMLSettings::KJSWindowStatusAllow) { <a name="l00912"></a>00912 String s = value.toString(exec); <a name="l00913"></a>00913 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->setJSStatusBarText(s.value().qstring()); <a name="l00914"></a>00914 } <a name="l00915"></a>00915 <span class="keywordflow">return</span>; <a name="l00916"></a>00916 } <a name="l00917"></a>00917 <span class="keywordflow">case</span> DefaultStatus: { <a name="l00918"></a>00918 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->settings()->windowStatusPolicy(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html#cb4ef957a59d80168a38c4bf24d0dd11">url</a>().<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#df3ad35581a0ca25ecc16e073f8275ca">host</a>()) <a name="l00919"></a>00919 == KHTMLSettings::KJSWindowStatusAllow) { <a name="l00920"></a>00920 String s = value.toString(exec); <a name="l00921"></a>00921 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->setJSDefaultStatusBarText(s.value().qstring()); <a name="l00922"></a>00922 } <a name="l00923"></a>00923 <span class="keywordflow">return</span>; <a name="l00924"></a>00924 } <a name="l00925"></a>00925 <span class="keywordflow">case</span> Onabort: <a name="l00926"></a>00926 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00927"></a>00927 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec, DOM::EventImpl::ABORT_EVENT,value); <a name="l00928"></a>00928 <span class="keywordflow">return</span>; <a name="l00929"></a>00929 <span class="keywordflow">case</span> Onblur: <a name="l00930"></a>00930 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00931"></a>00931 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec, DOM::EventImpl::BLUR_EVENT,value); <a name="l00932"></a>00932 <span class="keywordflow">return</span>; <a name="l00933"></a>00933 <span class="keywordflow">case</span> Onchange: <a name="l00934"></a>00934 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00935"></a>00935 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec, DOM::EventImpl::CHANGE_EVENT,value); <a name="l00936"></a>00936 <span class="keywordflow">return</span>; <a name="l00937"></a>00937 <span class="keywordflow">case</span> Onclick: <a name="l00938"></a>00938 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00939"></a>00939 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::KHTML_ECMA_CLICK_EVENT,value); <a name="l00940"></a>00940 <span class="keywordflow">return</span>; <a name="l00941"></a>00941 <span class="keywordflow">case</span> Ondblclick: <a name="l00942"></a>00942 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00943"></a>00943 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::KHTML_ECMA_DBLCLICK_EVENT,value); <a name="l00944"></a>00944 <span class="keywordflow">return</span>; <a name="l00945"></a>00945 <span class="keywordflow">case</span> Ondragdrop: <a name="l00946"></a>00946 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00947"></a>00947 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::KHTML_DRAGDROP_EVENT,value); <a name="l00948"></a>00948 <span class="keywordflow">return</span>; <a name="l00949"></a>00949 <span class="keywordflow">case</span> Onerror: <a name="l00950"></a>00950 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00951"></a>00951 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::ERROR_EVENT,value); <a name="l00952"></a>00952 <span class="keywordflow">return</span>; <a name="l00953"></a>00953 <span class="keywordflow">case</span> Onfocus: <a name="l00954"></a>00954 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00955"></a>00955 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::FOCUS_EVENT,value); <a name="l00956"></a>00956 <span class="keywordflow">return</span>; <a name="l00957"></a>00957 <span class="keywordflow">case</span> Onkeydown: <a name="l00958"></a>00958 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00959"></a>00959 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::KEYDOWN_EVENT,value); <a name="l00960"></a>00960 <span class="keywordflow">return</span>; <a name="l00961"></a>00961 <span class="keywordflow">case</span> Onkeypress: <a name="l00962"></a>00962 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00963"></a>00963 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::KEYPRESS_EVENT,value); <a name="l00964"></a>00964 <span class="keywordflow">return</span>; <a name="l00965"></a>00965 <span class="keywordflow">case</span> Onkeyup: <a name="l00966"></a>00966 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00967"></a>00967 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::KEYUP_EVENT,value); <a name="l00968"></a>00968 <span class="keywordflow">return</span>; <a name="l00969"></a>00969 <span class="keywordflow">case</span> Onload: <a name="l00970"></a>00970 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00971"></a>00971 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::LOAD_EVENT,value); <a name="l00972"></a>00972 <span class="keywordflow">return</span>; <a name="l00973"></a>00973 <span class="keywordflow">case</span> Onmousedown: <a name="l00974"></a>00974 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00975"></a>00975 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::MOUSEDOWN_EVENT,value); <a name="l00976"></a>00976 <span class="keywordflow">return</span>; <a name="l00977"></a>00977 <span class="keywordflow">case</span> Onmousemove: <a name="l00978"></a>00978 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00979"></a>00979 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::MOUSEMOVE_EVENT,value); <a name="l00980"></a>00980 <span class="keywordflow">return</span>; <a name="l00981"></a>00981 <span class="keywordflow">case</span> Onmouseout: <a name="l00982"></a>00982 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00983"></a>00983 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::MOUSEOUT_EVENT,value); <a name="l00984"></a>00984 <span class="keywordflow">return</span>; <a name="l00985"></a>00985 <span class="keywordflow">case</span> Onmouseover: <a name="l00986"></a>00986 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00987"></a>00987 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::MOUSEOVER_EVENT,value); <a name="l00988"></a>00988 <span class="keywordflow">return</span>; <a name="l00989"></a>00989 <span class="keywordflow">case</span> Onmouseup: <a name="l00990"></a>00990 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00991"></a>00991 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::MOUSEUP_EVENT,value); <a name="l00992"></a>00992 <span class="keywordflow">return</span>; <a name="l00993"></a>00993 <span class="keywordflow">case</span> Onmove: <a name="l00994"></a>00994 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00995"></a>00995 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::KHTML_MOVE_EVENT,value); <a name="l00996"></a>00996 <span class="keywordflow">return</span>; <a name="l00997"></a>00997 <span class="keywordflow">case</span> Onreset: <a name="l00998"></a>00998 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l00999"></a>00999 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::RESET_EVENT,value); <a name="l01000"></a>01000 <span class="keywordflow">return</span>; <a name="l01001"></a>01001 <span class="keywordflow">case</span> Onresize: <a name="l01002"></a>01002 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01003"></a>01003 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::RESIZE_EVENT,value); <a name="l01004"></a>01004 <span class="keywordflow">return</span>; <a name="l01005"></a>01005 <span class="keywordflow">case</span> Onselect: <a name="l01006"></a>01006 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01007"></a>01007 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::SELECT_EVENT,value); <a name="l01008"></a>01008 <span class="keywordflow">return</span>; <a name="l01009"></a>01009 <span class="keywordflow">case</span> Onsubmit: <a name="l01010"></a>01010 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01011"></a>01011 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::SUBMIT_EVENT,value); <a name="l01012"></a>01012 <span class="keywordflow">return</span>; <a name="l01013"></a>01013 <span class="keywordflow">case</span> Onunload: <a name="l01014"></a>01014 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01015"></a>01015 <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">setListener</a>(exec,DOM::EventImpl::UNLOAD_EVENT,value); <a name="l01016"></a>01016 <span class="keywordflow">return</span>; <a name="l01017"></a>01017 <span class="keywordflow">case</span> Name: <a name="l01018"></a>01018 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01019"></a>01019 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#setName">setName</a>( value.toString(exec).qstring().local8Bit().data() ); <a name="l01020"></a>01020 <span class="keywordflow">return</span>; <a name="l01021"></a>01021 <span class="keywordflow">default</span>: <a name="l01022"></a>01022 <span class="keywordflow">break</span>; <a name="l01023"></a>01023 } <a name="l01024"></a>01024 } <a name="l01025"></a>01025 } <a name="l01026"></a>01026 <span class="keywordflow">if</span> (m_frame->m_liveconnect && <a name="l01027"></a>01027 <a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) && <a name="l01028"></a>01028 m_frame->m_liveconnect->put(0, propertyName.qstring(), value.toString(exec).qstring())) <a name="l01029"></a>01029 <span class="keywordflow">return</span>; <a name="l01030"></a>01030 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) { <a name="l01031"></a>01031 <span class="comment">//kdDebug(6070) << "Window("<<this<<")::put storing " << propertyName.qstring() << endl;</span> <a name="l01032"></a>01032 ObjectImp::put(exec, propertyName, value, attr); <a name="l01033"></a>01033 } <a name="l01034"></a>01034 } <a name="l01035"></a>01035 <a name="l01036"></a><a class="code" href="classKJS_1_1Window.html#66a43d90b54ce4fa8916f5e64ea9feb4">01036</a> <span class="keywordtype">bool</span> <a class="code" href="classKJS_1_1Window.html#66a43d90b54ce4fa8916f5e64ea9feb4">Window::toBoolean</a>(ExecState *)<span class="keyword"> const</span> <a name="l01037"></a>01037 <span class="keyword"></span>{ <a name="l01038"></a>01038 <span class="keywordflow">return</span> !m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() && !m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>(); <a name="l01039"></a>01039 } <a name="l01040"></a>01040 <a name="l01041"></a><a class="code" href="classKJS_1_1Window.html#d203a6a597884c826772e01380e19681">01041</a> <a class="code" href="classDOM_1_1AbstractView.html">DOM::AbstractView</a> <a class="code" href="classKJS_1_1Window.html#d203a6a597884c826772e01380e19681">Window::toAbstractView</a>()<span class="keyword"> const</span> <a name="l01042"></a>01042 <span class="keyword"></span>{ <a name="l01043"></a>01043 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01044"></a>01044 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l01045"></a>01045 <span class="keywordflow">return</span> <a class="code" href="classDOM_1_1AbstractView.html">DOM::AbstractView</a>(); <a name="l01046"></a>01046 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document().defaultView(); <a name="l01047"></a>01047 } <a name="l01048"></a>01048 <a name="l01049"></a><a class="code" href="classKJS_1_1Window.html#27f0c4fa17e93f2883d328b7fabed871">01049</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#27f0c4fa17e93f2883d328b7fabed871">Window::scheduleClose</a>() <a name="l01050"></a>01050 { <a name="l01051"></a>01051 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::scheduleClose window.close() "</span> << m_frame << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01052"></a>01052 Q_ASSERT(<a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a>); <a name="l01053"></a>01053 <a class="codeRef" doxygen="qt.tag:" href="qtimer.html#singleShot">QTimer::singleShot</a>( 0, <a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a>, SLOT( timeoutClose() ) ); <a name="l01054"></a>01054 } <a name="l01055"></a>01055 <a name="l01056"></a><a class="code" href="classKJS_1_1Window.html#395943ac1c23a19b68936ee149bb92e5">01056</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#395943ac1c23a19b68936ee149bb92e5">Window::closeNow</a>() <a name="l01057"></a>01057 { <a name="l01058"></a>01058 <span class="keywordflow">if</span> (m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() || m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) { <a name="l01059"></a>01059 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg634e2de2b699b31ea3a79f984e836d64">k_funcinfo</a> << <span class="stringliteral">"part is deleted already"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01060"></a>01060 } <span class="keywordflow">else</span> { <a name="l01061"></a>01061 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01062"></a>01062 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) { <a name="l01063"></a>01063 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"closeNow on non KHTML part"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01064"></a>01064 } <span class="keywordflow">else</span> { <a name="l01065"></a>01065 <span class="comment">//kdDebug(6070) << k_funcinfo << " -> closing window" << endl;</span> <a name="l01066"></a>01066 <span class="comment">// We want to make sure that window.open won't find this part by name.</span> <a name="l01067"></a>01067 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#setName">setName</a>( 0 ); <a name="l01068"></a>01068 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#deleteLater">deleteLater</a>(); <a name="l01069"></a>01069 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = 0; <a name="l01070"></a>01070 } <a name="l01071"></a>01071 } <a name="l01072"></a>01072 } <a name="l01073"></a>01073 <a name="l01074"></a><a class="code" href="classKJS_1_1Window.html#3e9b58d6a12d845cdb084e1b195d2330">01074</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#3e9b58d6a12d845cdb084e1b195d2330">Window::afterScriptExecution</a>() <a name="l01075"></a>01075 { <a name="l01076"></a>01076 DOM::DocumentImpl::updateDocumentsRendering(); <a name="l01077"></a>01077 <a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html">QValueList<DelayedAction></a> delayedActions = m_delayed; <a name="l01078"></a>01078 m_delayed.clear(); <a name="l01079"></a>01079 <a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html">QValueList<DelayedAction>::Iterator</a> it = delayedActions.<a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html#begin">begin</a>(); <a name="l01080"></a>01080 <span class="keywordflow">for</span> ( ; it != delayedActions.<a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html#end">end</a>() ; ++it ) <a name="l01081"></a>01081 { <a name="l01082"></a>01082 <span class="keywordflow">switch</span> ((*it).actionId) { <a name="l01083"></a>01083 <span class="keywordflow">case</span> DelayedClose: <a name="l01084"></a>01084 <a class="code" href="classKJS_1_1Window.html#27f0c4fa17e93f2883d328b7fabed871">scheduleClose</a>(); <a name="l01085"></a>01085 <span class="keywordflow">return</span>; <span class="comment">// stop here, in case of multiple actions</span> <a name="l01086"></a>01086 <span class="keywordflow">case</span> DelayedGoHistory: <a name="l01087"></a>01087 <a class="code" href="classKJS_1_1Window.html#1dcec3118bf4d0951cc56e43ce9cd7c4">goHistory</a>( (*it).param.toInt() ); <a name="l01088"></a>01088 <span class="keywordflow">break</span>; <a name="l01089"></a>01089 <span class="keywordflow">case</span> NullAction: <a name="l01090"></a>01090 <span class="comment">// FIXME: anything needs to be done here? This is warning anyways.</span> <a name="l01091"></a>01091 <span class="keywordflow">break</span>; <a name="l01092"></a>01092 }; <a name="l01093"></a>01093 } <a name="l01094"></a>01094 } <a name="l01095"></a>01095 <a name="l01096"></a>01096 <span class="keywordtype">bool</span> Window::checkIsSafeScript(<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *activePart)<span class="keyword"> const</span> <a name="l01097"></a>01097 <span class="keyword"></span>{ <a name="l01098"></a>01098 <span class="keywordflow">if</span> (m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() || m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) { <span class="comment">// part deleted ? can't grant access</span> <a name="l01099"></a>01099 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::isSafeScript: accessing deleted part !"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01100"></a>01100 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l01101"></a>01101 } <a name="l01102"></a>01102 <span class="keywordflow">if</span> (!activePart) { <a name="l01103"></a>01103 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::isSafeScript: current interpreter's part is 0L!"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01104"></a>01104 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l01105"></a>01105 } <a name="l01106"></a>01106 <span class="keywordflow">if</span> ( activePart == m_frame->m_part ) <span class="comment">// Not calling from another frame, no problem.</span> <a name="l01107"></a>01107 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l01108"></a>01108 <a name="l01109"></a>01109 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01110"></a>01110 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l01111"></a>01111 <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// not a KHTMLPart</span> <a name="l01112"></a>01112 <a name="l01113"></a>01113 <span class="keywordflow">if</span> ( <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->document().isNull() ) <a name="l01114"></a>01114 <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// allow to access a window that was just created (e.g. with window.open("about:blank"))</span> <a name="l01115"></a>01115 <a name="l01116"></a>01116 <a class="code" href="classDOM_1_1HTMLDocument.html">DOM::HTMLDocument</a> thisDocument = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->htmlDocument(); <a name="l01117"></a>01117 <span class="keywordflow">if</span> ( thisDocument.<a class="code" href="classDOM_1_1Node.html#fbf817c4885b063f6672c20c6ec5cb2e">isNull</a>() ) { <a name="l01118"></a>01118 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::isSafeScript: trying to access an XML document !?"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01119"></a>01119 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l01120"></a>01120 } <a name="l01121"></a>01121 <a name="l01122"></a>01122 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *activeKHTMLPart = ::qt_cast<KHTMLPart *>(activePart); <a name="l01123"></a>01123 <span class="keywordflow">if</span> (!activeKHTMLPart) <a name="l01124"></a>01124 <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// not a KHTMLPart</span> <a name="l01125"></a>01125 <a name="l01126"></a>01126 <a class="code" href="classDOM_1_1HTMLDocument.html">DOM::HTMLDocument</a> actDocument = activeKHTMLPart-><a class="code" href="classKHTMLPart.html#56f0f72f58376e7308af0c392dd937a3">htmlDocument</a>(); <a name="l01127"></a>01127 <span class="keywordflow">if</span> ( actDocument.<a class="code" href="classDOM_1_1Node.html#fbf817c4885b063f6672c20c6ec5cb2e">isNull</a>() ) { <a name="l01128"></a>01128 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::isSafeScript: active part has no document!"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01129"></a>01129 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l01130"></a>01130 } <a name="l01131"></a>01131 <a class="code" href="classDOM_1_1DOMString.html">DOM::DOMString</a> actDomain = actDocument.<a class="code" href="classDOM_1_1HTMLDocument.html#1e450944c12df0dff37da20791645106">domain</a>(); <a name="l01132"></a>01132 <a class="code" href="classDOM_1_1DOMString.html">DOM::DOMString</a> thisDomain = thisDocument.<a class="code" href="classDOM_1_1HTMLDocument.html#1e450944c12df0dff37da20791645106">domain</a>(); <a name="l01133"></a>01133 <a name="l01134"></a>01134 <span class="keywordflow">if</span> ( actDomain == thisDomain ) { <a name="l01135"></a>01135 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l01136"></a>01136 <span class="preprocessor"></span> <span class="comment">//kdDebug(6070) << "JavaScript: access granted, domain is '" << actDomain.string() << "'" << endl;</span> <a name="l01137"></a>01137 <span class="preprocessor">#endif</span> <a name="l01138"></a>01138 <span class="preprocessor"></span> <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l01139"></a>01139 } <a name="l01140"></a>01140 <a name="l01141"></a>01141 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"WARNING: JavaScript: access denied for current frame '"</span> << actDomain.<a class="code" href="classDOM_1_1DOMString.html#21fd00babd7973c684e3b7f9070607ae">string</a>() << <span class="stringliteral">"' to frame '"</span> << thisDomain.<a class="code" href="classDOM_1_1DOMString.html#21fd00babd7973c684e3b7f9070607ae">string</a>() << <span class="stringliteral">"'"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01142"></a>01142 <span class="comment">// TODO after 3.1: throw security exception (exec->setException())</span> <a name="l01143"></a>01143 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l01144"></a>01144 } <a name="l01145"></a>01145 <a name="l01146"></a><a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">01146</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#bd75e09b3b0e1c3aa8d5bdda9beeeb4c">Window::setListener</a>(ExecState *exec, <span class="keywordtype">int</span> eventId, Value func) <a name="l01147"></a>01147 { <a name="l01148"></a>01148 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01149"></a>01149 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> || !<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01150"></a>01150 <span class="keywordflow">return</span>; <a name="l01151"></a>01151 DOM::DocumentImpl *doc = static_cast<DOM::DocumentImpl*>(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->htmlDocument().handle()); <a name="l01152"></a>01152 <span class="keywordflow">if</span> (!doc) <a name="l01153"></a>01153 <span class="keywordflow">return</span>; <a name="l01154"></a>01154 <a name="l01155"></a>01155 doc->setHTMLWindowEventListener(eventId,<a class="code" href="classKJS_1_1Window.html#8deaa03602259a888575e0165344e1c6">getJSEventListener</a>(func,<span class="keyword">true</span>)); <a name="l01156"></a>01156 } <a name="l01157"></a>01157 <a name="l01158"></a><a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">01158</a> Value <a class="code" href="classKJS_1_1Window.html#131c8f92b9b3432f2ad928fa88d3d4f8">Window::getListener</a>(ExecState *exec, <span class="keywordtype">int</span> eventId)<span class="keyword"> const</span> <a name="l01159"></a>01159 <span class="keyword"></span>{ <a name="l01160"></a>01160 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01161"></a>01161 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> || !<a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01162"></a>01162 <span class="keywordflow">return</span> Undefined(); <a name="l01163"></a>01163 DOM::DocumentImpl *doc = static_cast<DOM::DocumentImpl*>(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->htmlDocument().handle()); <a name="l01164"></a>01164 <span class="keywordflow">if</span> (!doc) <a name="l01165"></a>01165 <span class="keywordflow">return</span> Undefined(); <a name="l01166"></a>01166 <a name="l01167"></a>01167 <a class="code" href="classDOM_1_1EventListener.html">DOM::EventListener</a> *listener = doc->getHTMLWindowEventListener(eventId); <a name="l01168"></a>01168 <span class="keywordflow">if</span> (listener && static_cast<JSEventListener*>(listener)->listenerObjImp()) <a name="l01169"></a>01169 <span class="keywordflow">return</span> static_cast<JSEventListener*>(listener)->listenerObj(); <a name="l01170"></a>01170 <span class="keywordflow">else</span> <a name="l01171"></a>01171 <span class="keywordflow">return</span> Null(); <a name="l01172"></a>01172 } <a name="l01173"></a>01173 <a name="l01174"></a>01174 <a name="l01175"></a><a class="code" href="classKJS_1_1Window.html#8deaa03602259a888575e0165344e1c6">01175</a> <a class="code" href="classKJS_1_1JSEventListener.html">JSEventListener</a> *<a class="code" href="classKJS_1_1Window.html#8deaa03602259a888575e0165344e1c6">Window::getJSEventListener</a>(<span class="keyword">const</span> Value& val, <span class="keywordtype">bool</span> html) <a name="l01176"></a>01176 { <a name="l01177"></a>01177 <span class="comment">// This function is so hot that it's worth coding it directly with imps.</span> <a name="l01178"></a>01178 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01179"></a>01179 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> || val.type() != ObjectType) <a name="l01180"></a>01180 <span class="keywordflow">return</span> 0; <a name="l01181"></a>01181 <a name="l01182"></a>01182 <span class="comment">// It's ObjectType, so it must be valid.</span> <a name="l01183"></a>01183 Object listenerObject = Object::dynamicCast(val); <a name="l01184"></a>01184 ObjectImp *listenerObjectImp = listenerObject.imp(); <a name="l01185"></a>01185 <a name="l01186"></a>01186 <span class="comment">// 'listener' is not a simple ecma function. (Always use sanity checks: Better safe than sorry!)</span> <a name="l01187"></a>01187 <span class="keywordflow">if</span> (!listenerObject.implementsCall() && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jScript() && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jScript()->interpreter()) <a name="l01188"></a>01188 { <a name="l01189"></a>01189 Interpreter *interpreter = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jScript()->interpreter(); <a name="l01190"></a>01190 <a name="l01191"></a>01191 <span class="comment">// 'listener' probably is an EventListener object containing a 'handleEvent' function.</span> <a name="l01192"></a>01192 Value handleEventValue = listenerObject.get(interpreter->globalExec(), Identifier(<span class="stringliteral">"handleEvent"</span>)); <a name="l01193"></a>01193 Object handleEventObject = Object::dynamicCast(handleEventValue); <a name="l01194"></a>01194 <a name="l01195"></a>01195 <span class="keywordflow">if</span>(handleEventObject.isValid() && handleEventObject.implementsCall()) <a name="l01196"></a>01196 { <a name="l01197"></a>01197 listenerObject = handleEventObject; <a name="l01198"></a>01198 listenerObjectImp = handleEventObject.imp(); <a name="l01199"></a>01199 } <a name="l01200"></a>01200 } <a name="l01201"></a>01201 <a name="l01202"></a>01202 <a class="code" href="classKJS_1_1JSEventListener.html">JSEventListener</a> *existingListener = <a class="code" href="classKJS_1_1Window.html#ba4bf0ef949b677c9d2c9297f48f5027">jsEventListeners</a>[listenerObjectImp]; <a name="l01203"></a>01203 <span class="keywordflow">if</span> (existingListener) { <a name="l01204"></a>01204 <span class="keywordflow">if</span> ( existingListener-><a class="code" href="classKJS_1_1JSEventListener.html#3b2d4d57010d58f6838eb377ab56da1e">isHTMLEventListener</a>() != html ) <a name="l01205"></a>01205 <span class="comment">// The existingListener will have the wrong type, so onclick= will behave like addEventListener or vice versa.</span> <a name="l01206"></a>01206 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg9acd682001598171edf8ecb104fdad2b">kdWarning</a>() << <span class="stringliteral">"getJSEventListener: event listener already found but with html="</span> << !html << <span class="stringliteral">" - please report this, we thought it would never happen"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01207"></a>01207 <span class="keywordflow">return</span> existingListener; <a name="l01208"></a>01208 } <a name="l01209"></a>01209 <a name="l01210"></a>01210 <span class="comment">// Note that the JSEventListener constructor adds it to our jsEventListeners list</span> <a name="l01211"></a>01211 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classKJS_1_1JSEventListener.html">JSEventListener</a>(listenerObject, listenerObjectImp, Object(<span class="keyword">this</span>), html); <a name="l01212"></a>01212 } <a name="l01213"></a>01213 <a name="l01214"></a><a class="code" href="classKJS_1_1Window.html#c235ef747e84dde23d401a4029ed3a4c">01214</a> <a class="code" href="classKJS_1_1JSLazyEventListener.html">JSLazyEventListener</a> *<a class="code" href="classKJS_1_1Window.html#c235ef747e84dde23d401a4029ed3a4c">Window::getJSLazyEventListener</a>(<span class="keyword">const</span> <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>& code, <span class="keyword">const</span> <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>& name, DOM::NodeImpl *node) <a name="l01215"></a>01215 { <a name="l01216"></a>01216 <span class="keywordflow">return</span> <span class="keyword">new</span> <a class="code" href="classKJS_1_1JSLazyEventListener.html">JSLazyEventListener</a>(code, name, Object(<span class="keyword">this</span>), node); <a name="l01217"></a>01217 } <a name="l01218"></a>01218 <a name="l01219"></a><a class="code" href="classKJS_1_1Window.html#70f1172c311eb2090e89111f3493c846">01219</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#70f1172c311eb2090e89111f3493c846">Window::clear</a>( ExecState *exec ) <a name="l01220"></a>01220 { <a name="l01221"></a>01221 <span class="keyword">delete</span> <a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a>; <a name="l01222"></a>01222 <a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a> = 0L; <a name="l01223"></a>01223 <span class="comment">// Get rid of everything, those user vars could hold references to DOM nodes</span> <a name="l01224"></a>01224 deleteAllProperties( exec ); <a name="l01225"></a>01225 <a name="l01226"></a>01226 <span class="comment">// Break the dependency between the listeners and their object</span> <a name="l01227"></a>01227 <a class="codeRef" doxygen="qt.tag:" href="qptrdictiterator.html">QPtrDictIterator<JSEventListener></a> it(<a class="code" href="classKJS_1_1Window.html#ba4bf0ef949b677c9d2c9297f48f5027">jsEventListeners</a>); <a name="l01228"></a>01228 <span class="keywordflow">for</span> (; it.<a class="codeRef" doxygen="qt.tag:" href="qptrdictiterator.html#current">current</a>(); ++it) <a name="l01229"></a>01229 it.<a class="codeRef" doxygen="qt.tag:" href="qptrdictiterator.html#current">current</a>()->clear(); <a name="l01230"></a>01230 <span class="comment">// Forget about the listeners (the DOM::NodeImpls will delete them)</span> <a name="l01231"></a>01231 <a class="code" href="classKJS_1_1Window.html#ba4bf0ef949b677c9d2c9297f48f5027">jsEventListeners</a>.clear(); <a name="l01232"></a>01232 <a name="l01233"></a>01233 <span class="keywordflow">if</span> (m_frame) { <a name="l01234"></a>01234 <a class="code" href="classKJSProxy.html">KJSProxy</a>* proxy = m_frame->m_jscript; <a name="l01235"></a>01235 <span class="keywordflow">if</span> (proxy) <span class="comment">// i.e. JS not disabled</span> <a name="l01236"></a>01236 { <a name="l01237"></a>01237 <a class="code" href="classKJS_1_1Window.html#6639d4792e2335e0d5e85eb73fbdd8b3">winq</a> = <span class="keyword">new</span> <a class="code" href="classKJS_1_1Window.html#65eb284a4157ee4316353904a95b0066">WindowQObject</a>(<span class="keyword">this</span>); <a name="l01238"></a>01238 <span class="comment">// Now recreate a working global object for the next URL that will use us</span> <a name="l01239"></a>01239 KJS::Interpreter *interpreter = proxy-><a class="code" href="classKJSProxy.html#3a998f62916bf64732108d81fe6d4470">interpreter</a>(); <a name="l01240"></a>01240 interpreter->initGlobalObject(); <a name="l01241"></a>01241 } <a name="l01242"></a>01242 } <a name="l01243"></a>01243 } <a name="l01244"></a>01244 <a name="l01245"></a><a class="code" href="classKJS_1_1Window.html#9834f3ac5af039c3392b229ff6bdf0c5">01245</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#9834f3ac5af039c3392b229ff6bdf0c5">Window::setCurrentEvent</a>( <a class="code" href="classDOM_1_1Event.html">DOM::Event</a> *evt ) <a name="l01246"></a>01246 { <a name="l01247"></a>01247 m_evt = evt; <a name="l01248"></a>01248 <span class="comment">//kdDebug(6070) << "Window " << this << " (part=" << m_part << ")::setCurrentEvent m_evt=" << evt << endl;</span> <a name="l01249"></a>01249 } <a name="l01250"></a>01250 <a name="l01251"></a><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">01251</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">Window::goURL</a>(ExecState* exec, <span class="keyword">const</span> <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>& url, <span class="keywordtype">bool</span> lockHistory) <a name="l01252"></a>01252 { <a name="l01253"></a>01253 <a class="code" href="classKJS_1_1Window.html">Window</a>* active = <a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(exec); <a name="l01254"></a>01254 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01255"></a>01255 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *active_part = ::qt_cast<KHTMLPart *>(active-><a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>()); <a name="l01256"></a>01256 <span class="comment">// Complete the URL using the "active part" (running interpreter)</span> <a name="l01257"></a>01257 <span class="keywordflow">if</span> (active_part && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) { <a name="l01258"></a>01258 <span class="keywordflow">if</span> (url[0] == <a class="codeRef" doxygen="qt.tag:" href="qchar.html">QChar</a>(<span class="charliteral">'#'</span>)) { <a name="l01259"></a>01259 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->gotoAnchor(url.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#mid">mid</a>(1)); <a name="l01260"></a>01260 } <span class="keywordflow">else</span> { <a name="l01261"></a>01261 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> dstUrl = active_part->htmlDocument().completeURL(url).string(); <a name="l01262"></a>01262 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::goURL dstUrl="</span> << dstUrl << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01263"></a>01263 <a name="l01264"></a>01264 <span class="comment">// check if we're allowed to inject javascript</span> <a name="l01265"></a>01265 <span class="comment">// SYNC check with khtml_part.cpp::slotRedirect!</span> <a name="l01266"></a>01266 <span class="keywordflow">if</span> ( <a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) || <a name="l01267"></a>01267 dstUrl.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#find">find</a>(<a class="codeRef" doxygen="qt.tag:" href="qstring.html#fromLatin1">QString::fromLatin1</a>(<span class="stringliteral">"javascript:"</span>), 0, <span class="keyword">false</span>) != 0 ) <a name="l01268"></a>01268 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->scheduleRedirection(-1, <a name="l01269"></a>01269 dstUrl, <a name="l01270"></a>01270 lockHistory); <a name="l01271"></a>01271 } <a name="l01272"></a>01272 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> && !m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) { <a name="l01273"></a>01273 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *b = <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#8b0030640356a9a097e2a2328d7bfc3d">KParts::BrowserExtension::childObject</a>(m_frame->m_part); <a name="l01274"></a>01274 <span class="keywordflow">if</span> (b) <a name="l01275"></a>01275 b->emit openURLRequest(m_frame->m_frame->element()->getDocument()->completeURL(url)); <a name="l01276"></a>01276 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>() << <span class="stringliteral">"goURL for ROPart"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01277"></a>01277 } <a name="l01278"></a>01278 } <a name="l01279"></a>01279 <a name="l01280"></a><a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">01280</a> <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">Window::part</a>()<span class="keyword"> const </span>{ <a name="l01281"></a>01281 <span class="keywordflow">return</span> m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() ? 0L : static_cast<KParts::ReadOnlyPart *>(m_frame->m_part); <a name="l01282"></a>01282 } <a name="l01283"></a>01283 <a name="l01284"></a><a class="code" href="classKJS_1_1Window.html#33fb9f3499e852a178d7d039e4e305eb">01284</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#33fb9f3499e852a178d7d039e4e305eb">Window::delayedGoHistory</a>( <span class="keywordtype">int</span> steps ) <a name="l01285"></a>01285 { <a name="l01286"></a>01286 m_delayed.append( <a class="code" href="classKJS_1_1Window.html#667d4e831d325b6f987fbfededf70557">DelayedAction</a>( DelayedGoHistory, steps ) ); <a name="l01287"></a>01287 } <a name="l01288"></a>01288 <a name="l01289"></a><a class="code" href="classKJS_1_1Window.html#1dcec3118bf4d0951cc56e43ce9cd7c4">01289</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#1dcec3118bf4d0951cc56e43ce9cd7c4">Window::goHistory</a>( <span class="keywordtype">int</span> steps ) <a name="l01290"></a>01290 { <a name="l01291"></a>01291 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01292"></a>01292 <span class="keywordflow">if</span>(!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l01293"></a>01293 <span class="comment">// TODO history readonlypart</span> <a name="l01294"></a>01294 <span class="keywordflow">return</span>; <a name="l01295"></a>01295 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *ext = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->browserExtension(); <a name="l01296"></a>01296 <span class="keywordflow">if</span>(!ext) <a name="l01297"></a>01297 <span class="keywordflow">return</span>; <a name="l01298"></a>01298 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserInterface.html">KParts::BrowserInterface</a> *iface = ext-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#8bdeb19e1954a60fd49be6d7ab11d086">browserInterface</a>(); <a name="l01299"></a>01299 <a name="l01300"></a>01300 <span class="keywordflow">if</span> ( !iface ) <a name="l01301"></a>01301 <span class="keywordflow">return</span>; <a name="l01302"></a>01302 <a name="l01303"></a>01303 iface-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserInterface.html#2b7c63a3eaa196f53b3cc679714de295">callMethod</a>( <span class="stringliteral">"goHistory(int)"</span>, steps ); <a name="l01304"></a>01304 <span class="comment">//emit ext->goHistory(steps);</span> <a name="l01305"></a>01305 } <a name="l01306"></a>01306 <a name="l01307"></a><a class="code" href="classKJS_1_1Window.html#2cc8dafc364a8c79cd644dfeb3ea3472">01307</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#2cc8dafc364a8c79cd644dfeb3ea3472">KJS::Window::resizeTo</a>(<a class="codeRef" doxygen="qt.tag:" href="qwidget.html">QWidget</a>* tl, <span class="keywordtype">int</span> width, <span class="keywordtype">int</span> height) <a name="l01308"></a>01308 { <a name="l01309"></a>01309 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01310"></a>01310 <span class="keywordflow">if</span>(!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l01311"></a>01311 <span class="comment">// TODO resizeTo readonlypart</span> <a name="l01312"></a>01312 <span class="keywordflow">return</span>; <a name="l01313"></a>01313 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *ext = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->browserExtension(); <a name="l01314"></a>01314 <span class="keywordflow">if</span> (!ext) { <a name="l01315"></a>01315 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::resizeTo found no browserExtension"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01316"></a>01316 <span class="keywordflow">return</span>; <a name="l01317"></a>01317 } <a name="l01318"></a>01318 <a name="l01319"></a>01319 <span class="comment">// Security check: within desktop limits and bigger than 100x100 (per spec)</span> <a name="l01320"></a>01320 <span class="keywordflow">if</span> ( width < 100 || height < 100 ) { <a name="l01321"></a>01321 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::resizeTo refused, window would be too small ("</span><<width<<<span class="stringliteral">","</span><<height<<<span class="stringliteral">")"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01322"></a>01322 <span class="keywordflow">return</span>; <a name="l01323"></a>01323 } <a name="l01324"></a>01324 <a name="l01325"></a>01325 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> sg = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobalSettings.html#63f7c20327cdb7972e2aff9b765b8985">KGlobalSettings::desktopGeometry</a>(tl); <a name="l01326"></a>01326 <a name="l01327"></a>01327 <span class="keywordflow">if</span> ( width > sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>() || height > sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>() ) { <a name="l01328"></a>01328 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Window::resizeTo refused, window would be too big ("</span><<width<<<span class="stringliteral">","</span><<height<<<span class="stringliteral">")"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01329"></a>01329 <span class="keywordflow">return</span>; <a name="l01330"></a>01330 } <a name="l01331"></a>01331 <a name="l01332"></a>01332 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"resizing to "</span> << width << <span class="stringliteral">"x"</span> << height << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01333"></a>01333 <a name="l01334"></a>01334 emit ext-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#5ac0475a4a7d3434326c96bfcff57006">resizeTopLevelWidget</a>( width, height ); <a name="l01335"></a>01335 <a name="l01336"></a>01336 <span class="comment">// If the window is out of the desktop, move it up/left</span> <a name="l01337"></a>01337 <span class="comment">// (maybe we should use workarea instead of sg, otherwise the window ends up below kicker)</span> <a name="l01338"></a>01338 <span class="keywordtype">int</span> right = tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#x">x</a>() + tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#frameGeometry">frameGeometry</a>().width(); <a name="l01339"></a>01339 <span class="keywordtype">int</span> bottom = tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#y">y</a>() + tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#frameGeometry">frameGeometry</a>().height(); <a name="l01340"></a>01340 <span class="keywordtype">int</span> moveByX = 0; <a name="l01341"></a>01341 <span class="keywordtype">int</span> moveByY = 0; <a name="l01342"></a>01342 <span class="keywordflow">if</span> ( right > sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#right">right</a>() ) <a name="l01343"></a>01343 moveByX = - right + sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#right">right</a>(); <span class="comment">// always <0</span> <a name="l01344"></a>01344 <span class="keywordflow">if</span> ( bottom > sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#bottom">bottom</a>() ) <a name="l01345"></a>01345 moveByY = - bottom + sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#bottom">bottom</a>(); <span class="comment">// always <0</span> <a name="l01346"></a>01346 <span class="keywordflow">if</span> ( moveByX || moveByY ) <a name="l01347"></a>01347 emit ext-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#ad5b1ddfb7313a8cf23a791fde7ec336">moveTopLevelWidget</a>( tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#x">x</a>() + moveByX , tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#y">y</a>() + moveByY ); <a name="l01348"></a>01348 } <a name="l01349"></a>01349 <a name="l01350"></a><a class="code" href="classKJS_1_1Window.html#3fbc88455304ba04fcaa8fd59c3859eb">01350</a> Value <a class="code" href="classKJS_1_1Window.html#3fbc88455304ba04fcaa8fd59c3859eb">Window::openWindow</a>(ExecState *exec, <span class="keyword">const</span> List& args) <a name="l01351"></a>01351 { <a name="l01352"></a>01352 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01353"></a>01353 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l01354"></a>01354 <span class="keywordflow">return</span> Undefined(); <a name="l01355"></a>01355 <a class="code" href="classKHTMLView.html">KHTMLView</a> *widget = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view(); <a name="l01356"></a>01356 Value v = args[0]; <a name="l01357"></a>01357 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> str; <a name="l01358"></a>01358 <span class="keywordflow">if</span> (v.isValid() && !v.isA(UndefinedType)) <a name="l01359"></a>01359 str = v.toString(exec).qstring(); <a name="l01360"></a>01360 <a name="l01361"></a>01361 <span class="comment">// prepare arguments</span> <a name="l01362"></a>01362 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html">KURL</a> url; <a name="l01363"></a>01363 <span class="keywordflow">if</span> (!str.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#isEmpty">isEmpty</a>()) <a name="l01364"></a>01364 { <a name="l01365"></a>01365 <a class="code" href="classKHTMLPart.html">KHTMLPart</a>* p = ::qt_cast<KHTMLPart *>(<a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(exec)->m_frame->m_part); <a name="l01366"></a>01366 <span class="keywordflow">if</span> ( p ) <a name="l01367"></a>01367 url = p->htmlDocument().completeURL(str).string(); <a name="l01368"></a>01368 <span class="keywordflow">if</span> ( !p || <a name="l01369"></a>01369 !static_cast<DOM::DocumentImpl*>(p->htmlDocument().handle())->isURLAllowed(url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#af8593b924647a9db73016fbeab1812a">url</a>()) ) <a name="l01370"></a>01370 <span class="keywordflow">return</span> Undefined(); <a name="l01371"></a>01371 } <a name="l01372"></a>01372 <a name="l01373"></a>01373 <a class="code" href="classKHTMLSettings.html#b38fc8c32f4d73a22b87efd5432eb8c8">KHTMLSettings::KJSWindowOpenPolicy</a> policy = <a name="l01374"></a>01374 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->settings()->windowOpenPolicy(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html#cb4ef957a59d80168a38c4bf24d0dd11">url</a>().<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#df3ad35581a0ca25ecc16e073f8275ca">host</a>()); <a name="l01375"></a>01375 <span class="keywordflow">if</span> ( policy == KHTMLSettings::KJSWindowOpenAsk ) { <a name="l01376"></a>01376 emit <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->browserExtension()->requestFocus(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>); <a name="l01377"></a>01377 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> caption; <a name="l01378"></a>01378 <span class="keywordflow">if</span> (!part->url().host().isEmpty()) <a name="l01379"></a>01379 caption = part->url().host() + <span class="stringliteral">" - "</span>; <a name="l01380"></a>01380 caption += i18n( <span class="stringliteral">"Confirmation: JavaScript Popup"</span> ); <a name="l01381"></a>01381 <span class="keywordflow">if</span> ( <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#f1f1a8e08ec4af3c5fee67e2e553c96d">KMessageBox::questionYesNo</a>(widget, <a name="l01382"></a>01382 str.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#isEmpty">isEmpty</a>() ? <a name="l01383"></a>01383 i18n( <span class="stringliteral">"This site is requesting to open up a new browser "</span> <a name="l01384"></a>01384 <span class="stringliteral">"window via JavaScript.\n"</span> <a name="l01385"></a>01385 <span class="stringliteral">"Do you want to allow this?"</span> ) : <a name="l01386"></a>01386 i18n( <span class="stringliteral">"<qt>This site is requesting to open<p>%1</p>in a new browser window via JavaScript.<br />"</span> <a name="l01387"></a>01387 <span class="stringliteral">"Do you want to allow this?</qt>"</span>).arg(<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKStringHandler.html#5d09c657585f2b3443e5af9e8a1fbef7">KStringHandler::csqueeze</a>(url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#1435c4cc9e9cda44c3490eba7a351101">htmlURL</a>(), 100)), <a name="l01388"></a>01388 caption, i18n(<span class="stringliteral">"Allow"</span>), i18n(<span class="stringliteral">"Do Not Allow"</span>) ) == <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#7b65482f7d03a391aff64c73f7cae32a2a5a0869dd1dad4b9dc0a83308ec5f8c">KMessageBox::Yes</a> ) <a name="l01389"></a>01389 policy = KHTMLSettings::KJSWindowOpenAllow; <a name="l01390"></a>01390 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( policy == KHTMLSettings::KJSWindowOpenSmart ) <a name="l01391"></a>01391 { <a name="l01392"></a>01392 <span class="comment">// window.open disabled unless from a key/mouse event</span> <a name="l01393"></a>01393 <span class="keywordflow">if</span> (static_cast<ScriptInterpreter *>(exec->interpreter())->isWindowOpenAllowed()) <a name="l01394"></a>01394 policy = KHTMLSettings::KJSWindowOpenAllow; <a name="l01395"></a>01395 } <a name="l01396"></a>01396 <a name="l01397"></a>01397 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> frameName = args.size() > 1 ? args[1].toString(exec).qstring() : <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>(<span class="stringliteral">"_blank"</span>); <a name="l01398"></a>01398 <a name="l01399"></a>01399 v = args[2]; <a name="l01400"></a>01400 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> features; <a name="l01401"></a>01401 <span class="keywordflow">if</span> (!v.isNull() && v.type() != UndefinedType && v.toString(exec).size() > 0) { <a name="l01402"></a>01402 features = v.toString(exec).qstring(); <a name="l01403"></a>01403 <span class="comment">// Buggy scripts have ' at beginning and end, cut those</span> <a name="l01404"></a>01404 <span class="keywordflow">if</span> (features.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#startsWith">startsWith</a>(<span class="stringliteral">"\'"</span>) && features.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#endsWith">endsWith</a>(<span class="stringliteral">"\'"</span>)) <a name="l01405"></a>01405 features = features.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#mid">mid</a>(1, features.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#length">length</a>()-2); <a name="l01406"></a>01406 } <a name="l01407"></a>01407 <a name="l01408"></a>01408 <span class="keywordflow">if</span> ( policy != KHTMLSettings::KJSWindowOpenAllow ) { <a name="l01409"></a>01409 <span class="keywordflow">if</span> ( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#f10f805c72d7223d88d7499fc5f39bd2">isEmpty</a>() ) <a name="l01410"></a>01410 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->setSuppressedPopupIndicator(<span class="keyword">true</span>, 0); <a name="l01411"></a>01411 <span class="keywordflow">else</span> { <a name="l01412"></a>01412 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->setSuppressedPopupIndicator(<span class="keyword">true</span>, <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>); <a name="l01413"></a>01413 m_suppressedWindowInfo.append( SuppressedWindowInfo( url, frameName, features ) ); <a name="l01414"></a>01414 } <a name="l01415"></a>01415 <span class="keywordflow">return</span> Undefined(); <a name="l01416"></a>01416 } <span class="keywordflow">else</span> { <a name="l01417"></a>01417 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#cbf994e5509b3cefe9a6ab946a6f3754">executeOpenWindow</a>(exec, url, frameName, features); <a name="l01418"></a>01418 } <a name="l01419"></a>01419 } <a name="l01420"></a>01420 <a name="l01421"></a><a class="code" href="classKJS_1_1Window.html#cbf994e5509b3cefe9a6ab946a6f3754">01421</a> Value <a class="code" href="classKJS_1_1Window.html#cbf994e5509b3cefe9a6ab946a6f3754">Window::executeOpenWindow</a>(ExecState *exec, <span class="keyword">const</span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html">KURL</a>& url, <span class="keyword">const</span> <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>& frameName, <span class="keyword">const</span> <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>& features) <a name="l01422"></a>01422 { <a name="l01423"></a>01423 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *p = ::qt_cast<KHTMLPart *>(m_frame->m_part); <a name="l01424"></a>01424 <a class="code" href="classKHTMLView.html">KHTMLView</a> *widget = p-><a class="code" href="classKHTMLPart.html#a2c1b121eeba45e3dad2918cf51972c9">view</a>(); <a name="l01425"></a>01425 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html">KParts::WindowArgs</a> winargs; <a name="l01426"></a>01426 <a name="l01427"></a>01427 <span class="comment">// scan feature argument</span> <a name="l01428"></a>01428 <span class="keywordflow">if</span> (!features.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#isEmpty">isEmpty</a>()) { <a name="l01429"></a>01429 <span class="comment">// specifying window params means false defaults</span> <a name="l01430"></a>01430 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#0c26b5af268577698632bd3eac9d6e76">menuBarVisible</a> = <span class="keyword">false</span>; <a name="l01431"></a>01431 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#1a6cda62cee089981d6f81832fafe009">toolBarsVisible</a> = <span class="keyword">false</span>; <a name="l01432"></a>01432 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#49e84acd52e93c4af44e9fe8d91fe193">statusBarVisible</a> = <span class="keyword">false</span>; <a name="l01433"></a>01433 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#ea2519d67e2ec5e15e53ce1c75f20aa9">scrollBarsVisible</a> = <span class="keyword">false</span>; <a name="l01434"></a>01434 <a class="codeRef" doxygen="qt.tag:" href="qstringlist.html">QStringList</a> flist = <a class="codeRef" doxygen="qt.tag:" href="qstringlist.html#split">QStringList::split</a>(<span class="charliteral">','</span>, features); <a name="l01435"></a>01435 QStringList::ConstIterator it = flist.begin(); <a name="l01436"></a>01436 <span class="keywordflow">while</span> (it != flist.end()) { <a name="l01437"></a>01437 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> s = *it++; <a name="l01438"></a>01438 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> key, val; <a name="l01439"></a>01439 <span class="keywordtype">int</span> pos = s.find(<span class="charliteral">'='</span>); <a name="l01440"></a>01440 <span class="keywordflow">if</span> (pos >= 0) { <a name="l01441"></a>01441 key = s.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#left">left</a>(pos).stripWhiteSpace().lower(); <a name="l01442"></a>01442 val = s.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#mid">mid</a>(pos + 1).stripWhiteSpace().lower(); <a name="l01443"></a>01443 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> screen = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobalSettings.html#63f7c20327cdb7972e2aff9b765b8985">KGlobalSettings::desktopGeometry</a>(widget->topLevelWidget()); <a name="l01444"></a>01444 <a name="l01445"></a>01445 <span class="keywordflow">if</span> (key == <span class="stringliteral">"left"</span> || key == <span class="stringliteral">"screenx"</span>) { <a name="l01446"></a>01446 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#c3f33089484f9ef38590c849b2cb89b9">x</a> = (int)val.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#toFloat">toFloat</a>() + screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>(); <a name="l01447"></a>01447 <span class="keywordflow">if</span> (winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#c3f33089484f9ef38590c849b2cb89b9">x</a> < screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>() || winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#c3f33089484f9ef38590c849b2cb89b9">x</a> > screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#right">right</a>()) <a name="l01448"></a>01448 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#c3f33089484f9ef38590c849b2cb89b9">x</a> = screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>(); <span class="comment">// only safe choice until size is determined</span> <a name="l01449"></a>01449 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"top"</span> || key == <span class="stringliteral">"screeny"</span>) { <a name="l01450"></a>01450 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#ce0d35d7a2828e1002a3886a3bd58bba">y</a> = (int)val.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#toFloat">toFloat</a>() + screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>(); <a name="l01451"></a>01451 <span class="keywordflow">if</span> (winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#ce0d35d7a2828e1002a3886a3bd58bba">y</a> < screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>() || winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#ce0d35d7a2828e1002a3886a3bd58bba">y</a> > screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#bottom">bottom</a>()) <a name="l01452"></a>01452 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#ce0d35d7a2828e1002a3886a3bd58bba">y</a> = screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>(); <span class="comment">// only safe choice until size is determined</span> <a name="l01453"></a>01453 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"height"</span>) { <a name="l01454"></a>01454 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#5b0c0a20a477b5661d87f1d97fcb4787">height</a> = (int)val.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#toFloat">toFloat</a>() + 2*qApp->style().pixelMetric( QStyle::PM_DefaultFrameWidth ) + 2; <a name="l01455"></a>01455 <span class="keywordflow">if</span> (winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#5b0c0a20a477b5661d87f1d97fcb4787">height</a> > screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>()) <span class="comment">// should actually check workspace</span> <a name="l01456"></a>01456 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#5b0c0a20a477b5661d87f1d97fcb4787">height</a> = screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>(); <a name="l01457"></a>01457 <span class="keywordflow">if</span> (winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#5b0c0a20a477b5661d87f1d97fcb4787">height</a> < 100) <a name="l01458"></a>01458 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#5b0c0a20a477b5661d87f1d97fcb4787">height</a> = 100; <a name="l01459"></a>01459 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"width"</span>) { <a name="l01460"></a>01460 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#20eac77fb2287d0096964c10ac993fd9">width</a> = (int)val.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#toFloat">toFloat</a>() + 2*qApp->style().pixelMetric( QStyle::PM_DefaultFrameWidth ) + 2; <a name="l01461"></a>01461 <span class="keywordflow">if</span> (winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#20eac77fb2287d0096964c10ac993fd9">width</a> > screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>()) <span class="comment">// should actually check workspace</span> <a name="l01462"></a>01462 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#20eac77fb2287d0096964c10ac993fd9">width</a> = screen.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>(); <a name="l01463"></a>01463 <span class="keywordflow">if</span> (winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#20eac77fb2287d0096964c10ac993fd9">width</a> < 100) <a name="l01464"></a>01464 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#20eac77fb2287d0096964c10ac993fd9">width</a> = 100; <a name="l01465"></a>01465 } <span class="keywordflow">else</span> { <a name="l01466"></a>01466 <span class="keywordflow">goto</span> boolargs; <a name="l01467"></a>01467 } <a name="l01468"></a>01468 <span class="keywordflow">continue</span>; <a name="l01469"></a>01469 } <span class="keywordflow">else</span> { <a name="l01470"></a>01470 <span class="comment">// leaving away the value gives true</span> <a name="l01471"></a>01471 key = s.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#stripWhiteSpace">stripWhiteSpace</a>().lower(); <a name="l01472"></a>01472 val = <span class="stringliteral">"1"</span>; <a name="l01473"></a>01473 } <a name="l01474"></a>01474 boolargs: <a name="l01475"></a>01475 <span class="keywordflow">if</span> (key == <span class="stringliteral">"menubar"</span>) <a name="l01476"></a>01476 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#0c26b5af268577698632bd3eac9d6e76">menuBarVisible</a> = (val == <span class="stringliteral">"1"</span> || val == <span class="stringliteral">"yes"</span>); <a name="l01477"></a>01477 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"toolbar"</span>) <a name="l01478"></a>01478 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#1a6cda62cee089981d6f81832fafe009">toolBarsVisible</a> = (val == <span class="stringliteral">"1"</span> || val == <span class="stringliteral">"yes"</span>); <a name="l01479"></a>01479 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"location"</span>) <span class="comment">// ### missing in WindowArgs</span> <a name="l01480"></a>01480 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#1a6cda62cee089981d6f81832fafe009">toolBarsVisible</a> = (val == <span class="stringliteral">"1"</span> || val == <span class="stringliteral">"yes"</span>); <a name="l01481"></a>01481 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"status"</span> || key == <span class="stringliteral">"statusbar"</span>) <a name="l01482"></a>01482 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#49e84acd52e93c4af44e9fe8d91fe193">statusBarVisible</a> = (val == <span class="stringliteral">"1"</span> || val == <span class="stringliteral">"yes"</span>); <a name="l01483"></a>01483 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"scrollbars"</span>) <a name="l01484"></a>01484 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#ea2519d67e2ec5e15e53ce1c75f20aa9">scrollBarsVisible</a> = (val == <span class="stringliteral">"1"</span> || val == <span class="stringliteral">"yes"</span>); <a name="l01485"></a>01485 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"resizable"</span>) <a name="l01486"></a>01486 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#06919f69f25cd50e1f453fd1175a0c1e">resizable</a> = (val == <span class="stringliteral">"1"</span> || val == <span class="stringliteral">"yes"</span>); <a name="l01487"></a>01487 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (key == <span class="stringliteral">"fullscreen"</span>) <a name="l01488"></a>01488 winargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1WindowArgs.html#2352c5c3672e1a6cfceea23a8c0eb1c2">fullscreen</a> = (val == <span class="stringliteral">"1"</span> || val == <span class="stringliteral">"yes"</span>); <a name="l01489"></a>01489 } <a name="l01490"></a>01490 } <a name="l01491"></a>01491 <a name="l01492"></a>01492 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html">KParts::URLArgs</a> uargs; <a name="l01493"></a>01493 uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#7dbf89b0854f7329aa4a3b023648992c">frameName</a> = frameName; <a name="l01494"></a>01494 <a name="l01495"></a>01495 <span class="keywordflow">if</span> ( uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#7dbf89b0854f7329aa4a3b023648992c">frameName</a>.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#lower">lower</a>() == <span class="stringliteral">"_top"</span> ) <a name="l01496"></a>01496 { <a name="l01497"></a>01497 <span class="keywordflow">while</span> ( p-><a class="code" href="classKHTMLPart.html#4ab62fae7ea81eafb62c1ae13c13e401">parentPart</a>() ) <a name="l01498"></a>01498 p = p-><a class="code" href="classKHTMLPart.html#4ab62fae7ea81eafb62c1ae13c13e401">parentPart</a>(); <a name="l01499"></a>01499 <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(p)-><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#af8593b924647a9db73016fbeab1812a">url</a>(), <span class="keyword">false</span> <span class="comment">/*don't lock history*/</span>); <a name="l01500"></a>01500 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(p); <a name="l01501"></a>01501 } <a name="l01502"></a>01502 <span class="keywordflow">if</span> ( uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#7dbf89b0854f7329aa4a3b023648992c">frameName</a>.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#lower">lower</a>() == <span class="stringliteral">"_parent"</span> ) <a name="l01503"></a>01503 { <a name="l01504"></a>01504 <span class="keywordflow">if</span> ( p-><a class="code" href="classKHTMLPart.html#4ab62fae7ea81eafb62c1ae13c13e401">parentPart</a>() ) <a name="l01505"></a>01505 p = p-><a class="code" href="classKHTMLPart.html#4ab62fae7ea81eafb62c1ae13c13e401">parentPart</a>(); <a name="l01506"></a>01506 <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(p)-><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#af8593b924647a9db73016fbeab1812a">url</a>(), <span class="keyword">false</span> <span class="comment">/*don't lock history*/</span>); <a name="l01507"></a>01507 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(p); <a name="l01508"></a>01508 } <a name="l01509"></a>01509 <span class="keywordflow">if</span> ( uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#7dbf89b0854f7329aa4a3b023648992c">frameName</a>.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#lower">lower</a>() == <span class="stringliteral">"_self"</span>) <a name="l01510"></a>01510 { <a name="l01511"></a>01511 <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(p)-><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#af8593b924647a9db73016fbeab1812a">url</a>(), <span class="keyword">false</span> <span class="comment">/*don't lock history*/</span>); <a name="l01512"></a>01512 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(p); <a name="l01513"></a>01513 } <a name="l01514"></a>01514 <span class="keywordflow">if</span> ( uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#7dbf89b0854f7329aa4a3b023648992c">frameName</a>.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#lower">lower</a>() == <span class="stringliteral">"replace"</span> ) <a name="l01515"></a>01515 { <a name="l01516"></a>01516 <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(p)-><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#af8593b924647a9db73016fbeab1812a">url</a>(), <span class="keyword">true</span> <span class="comment">/*lock history*/</span>); <a name="l01517"></a>01517 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(p); <a name="l01518"></a>01518 } <a name="l01519"></a>01519 uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#5fc23c30f547e5a7a1a35e0d9b17e17b">serviceType</a> = <span class="stringliteral">"text/html"</span>; <a name="l01520"></a>01520 <a name="l01521"></a>01521 <span class="comment">// request window (new or existing if framename is set)</span> <a name="l01522"></a>01522 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *newPart = 0L; <a name="l01523"></a>01523 emit p-><a class="code" href="classKHTMLPart.html#271649475129052a094ca3612765533f">browserExtension</a>()-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#b68d93c5455a883e0288c510161f298b">createNewWindow</a>(<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html">KURL</a>(), uargs,winargs,newPart); <a name="l01524"></a>01524 <span class="keywordflow">if</span> (newPart && ::qt_cast<KHTMLPart*>(newPart)) { <a name="l01525"></a>01525 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *khtmlpart = static_cast<KHTMLPart*>(newPart); <a name="l01526"></a>01526 <span class="comment">//qDebug("opener set to %p (this Window's part) in new Window %p (this Window=%p)",part,win,window);</span> <a name="l01527"></a>01527 khtmlpart-><a class="code" href="classKHTMLPart.html#e4f3ffe049e3e344254c7dd2aa79990c">setOpener</a>(p); <a name="l01528"></a>01528 khtmlpart-><a class="code" href="classKHTMLPart.html#acc1964da9b2a84f4767c0a0bddf9a70">setOpenedByJS</a>(<span class="keyword">true</span>); <a name="l01529"></a>01529 <span class="keywordflow">if</span> (khtmlpart-><a class="code" href="classKHTMLPart.html#89a1470b2d74e6e7c36e3c54718900e0">document</a>().<a class="code" href="classDOM_1_1Node.html#fbf817c4885b063f6672c20c6ec5cb2e">isNull</a>()) { <a name="l01530"></a>01530 khtmlpart-><a class="code" href="classKHTMLPart.html#fa6f3b007d8e61f0b1813ca12af61837">begin</a>(); <a name="l01531"></a>01531 khtmlpart-><a class="code" href="classKHTMLPart.html#4b62d272ab268de4b2506caef73340df">write</a>(<span class="stringliteral">"<HTML><BODY>"</span>); <a name="l01532"></a>01532 khtmlpart-><a class="code" href="classKHTMLPart.html#89ff5e36acdead03b5d978ef72ca9c51">end</a>(); <a name="l01533"></a>01533 <span class="keywordflow">if</span> ( p-><a class="code" href="classKHTMLPart.html#b2011f6112fccc161c187515946308d1">docImpl</a>() ) { <a name="l01534"></a>01534 <span class="comment">//kdDebug(6070) << "Setting domain to " << p->docImpl()->domain().string() << endl;</span> <a name="l01535"></a>01535 khtmlpart-><a class="code" href="classKHTMLPart.html#b2011f6112fccc161c187515946308d1">docImpl</a>()->setDomain( p-><a class="code" href="classKHTMLPart.html#b2011f6112fccc161c187515946308d1">docImpl</a>()->domain()); <a name="l01536"></a>01536 khtmlpart-><a class="code" href="classKHTMLPart.html#b2011f6112fccc161c187515946308d1">docImpl</a>()->setBaseURL( p-><a class="code" href="classKHTMLPart.html#b2011f6112fccc161c187515946308d1">docImpl</a>()->baseURL() ); <a name="l01537"></a>01537 } <a name="l01538"></a>01538 } <a name="l01539"></a>01539 uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#5fc23c30f547e5a7a1a35e0d9b17e17b">serviceType</a> = QString::null; <a name="l01540"></a>01540 <span class="keywordflow">if</span> (uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#7dbf89b0854f7329aa4a3b023648992c">frameName</a>.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#lower">lower</a>() == <span class="stringliteral">"_blank"</span>) <a name="l01541"></a>01541 uargs.<a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/structKParts_1_1URLArgs.html#7dbf89b0854f7329aa4a3b023648992c">frameName</a> = QString::null; <a name="l01542"></a>01542 if (!url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#f10f805c72d7223d88d7499fc5f39bd2">isEmpty</a>()) <a name="l01543"></a>01543 emit khtmlpart-><a class="code" href="classKHTMLPart.html#271649475129052a094ca3612765533f">browserExtension</a>()-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#fa13489a1195eb4c839cd0864d607a40">openURLRequest</a>(url,uargs); <a name="l01544"></a>01544 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(khtmlpart); <span class="comment">// global object</span> <a name="l01545"></a>01545 } <span class="keywordflow">else</span> <a name="l01546"></a>01546 <span class="keywordflow">return</span> Undefined(); <a name="l01547"></a>01547 } <a name="l01548"></a>01548 <a name="l01549"></a><a class="code" href="classKJS_1_1Window.html#93bf1e0b39201de4b4cca65a99253206">01549</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#93bf1e0b39201de4b4cca65a99253206">Window::forgetSuppressedWindows</a>() <a name="l01550"></a>01550 { <a name="l01551"></a>01551 m_suppressedWindowInfo.clear(); <a name="l01552"></a>01552 } <a name="l01553"></a>01553 <a name="l01554"></a><a class="code" href="classKJS_1_1Window.html#cd3f2742e9fd7c236d6c7b51d8378b5b">01554</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Window.html#cd3f2742e9fd7c236d6c7b51d8378b5b">Window::showSuppressedWindows</a>() <a name="l01555"></a>01555 { <a name="l01556"></a>01556 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>( m_frame->m_part ); <a name="l01557"></a>01557 KJS::Interpreter *interpreter = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->jScript()->interpreter(); <a name="l01558"></a>01558 ExecState *exec = interpreter->globalExec(); <a name="l01559"></a>01559 <a name="l01560"></a>01560 <a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html">QValueList<SuppressedWindowInfo></a> suppressedWindowInfo = m_suppressedWindowInfo; <a name="l01561"></a>01561 m_suppressedWindowInfo.clear(); <a name="l01562"></a>01562 <a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html">QValueList<SuppressedWindowInfo>::Iterator</a> it = suppressedWindowInfo.<a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html#begin">begin</a>(); <a name="l01563"></a>01563 <span class="keywordflow">for</span> ( ; it != suppressedWindowInfo.<a class="codeRef" doxygen="qt.tag:" href="qvaluelist.html#end">end</a>() ; ++it ) { <a name="l01564"></a>01564 <a class="code" href="classKJS_1_1Window.html#cbf994e5509b3cefe9a6ab946a6f3754">executeOpenWindow</a>(exec, (*it).url, (*it).frameName, (*it).features); <a name="l01565"></a>01565 } <a name="l01566"></a>01566 } <a name="l01567"></a>01567 <a name="l01568"></a>01568 Value WindowFunc::tryCall(ExecState *exec, Object &thisObj, <span class="keyword">const</span> List &args) <a name="l01569"></a>01569 { <a name="l01570"></a>01570 KJS_CHECK_THIS( <a class="code" href="classKJS_1_1Window.html">Window</a>, thisObj ); <a name="l01571"></a>01571 <a class="code" href="classKJS_1_1Window.html">Window</a> *window = static_cast<Window *>(thisObj.imp()); <a name="l01572"></a>01572 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> str, str2; <a name="l01573"></a>01573 <a name="l01574"></a>01574 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> = ::qt_cast<KHTMLPart *>(window-><a class="code" href="classKJS_1_1Window.html#7cd670037d441bcf4553ae399b17432e">m_frame</a>->m_part); <a name="l01575"></a>01575 <span class="keywordflow">if</span> (!<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>) <a name="l01576"></a>01576 <span class="keywordflow">return</span> Undefined(); <a name="l01577"></a>01577 <a name="l01578"></a>01578 <a class="code" href="classKHTMLView.html">KHTMLView</a> *widget = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->view(); <a name="l01579"></a>01579 Value v = args[0]; <a name="l01580"></a>01580 UString s; <a name="l01581"></a>01581 <span class="keywordflow">if</span> (v.isValid() && !v.isA(UndefinedType)) { <a name="l01582"></a>01582 s = v.toString(exec); <a name="l01583"></a>01583 str = s.qstring(); <a name="l01584"></a>01584 } <a name="l01585"></a>01585 <a name="l01586"></a>01586 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> caption; <a name="l01587"></a>01587 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> && !<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html#cb4ef957a59d80168a38c4bf24d0dd11">url</a>().<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#df3ad35581a0ca25ecc16e073f8275ca">host</a>().<a class="codeRef" doxygen="qt.tag:" href="qstring.html#isEmpty">isEmpty</a>()) <a name="l01588"></a>01588 caption = <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html#cb4ef957a59d80168a38c4bf24d0dd11">url</a>().<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#df3ad35581a0ca25ecc16e073f8275ca">host</a>() + <span class="stringliteral">" - "</span>; <a name="l01589"></a>01589 caption += <span class="stringliteral">"JavaScript"</span>; <span class="comment">// TODO: i18n</span> <a name="l01590"></a>01590 <span class="comment">// functions that work everywhere</span> <a name="l01591"></a>01591 <span class="keywordflow">switch</span>(<span class="keywordtype">id</span>) { <a name="l01592"></a>01592 <span class="keywordflow">case</span> Window::Alert: <a name="l01593"></a>01593 <span class="keywordflow">if</span> (!widget-><a class="code" href="classKHTMLView.html#9e7dd6e823693039e505e9feeab3beb4">dialogsAllowed</a>()) <a name="l01594"></a>01594 <span class="keywordflow">return</span> Undefined(); <a name="l01595"></a>01595 <span class="keywordflow">if</span> ( <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> && <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->xmlDocImpl() ) <a name="l01596"></a>01596 <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->xmlDocImpl()->updateRendering(); <a name="l01597"></a>01597 <span class="keywordflow">if</span> ( <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a> ) <a name="l01598"></a>01598 emit <a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>->browserExtension()->requestFocus(<a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>); <a name="l01599"></a>01599 <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#7bb67ab10f06b33f1d20f8c140391d54">KMessageBox::error</a>(widget, <a class="codeRef" doxygen="qt.tag:" href="qstylesheet.html#convertFromPlainText">QStyleSheet::convertFromPlainText</a>(str), caption); <a name="l01600"></a>01600 <span class="keywordflow">return</span> Undefined(); <a name="l01601"></a>01601 <span class="keywordflow">case</span> Window::Confirm: <a name="l01602"></a>01602 <span class="keywordflow">if</span> (!widget-><a class="code" href="classKHTMLView.html#9e7dd6e823693039e505e9feeab3beb4">dialogsAllowed</a>()) <a name="l01603"></a>01603 <span class="keywordflow">return</span> Undefined(); <a name="l01604"></a>01604 <span class="keywordflow">if</span> ( part && part->xmlDocImpl() ) <a name="l01605"></a>01605 part->xmlDocImpl()->updateRendering(); <a name="l01606"></a>01606 <span class="keywordflow">if</span> ( part ) <a name="l01607"></a>01607 emit part->browserExtension()->requestFocus(part); <a name="l01608"></a>01608 <span class="keywordflow">return</span> Boolean((<a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#334786d77558a971d1a58c09bdfff316">KMessageBox::warningYesNo</a>(widget, <a class="codeRef" doxygen="qt.tag:" href="qstylesheet.html#convertFromPlainText">QStyleSheet::convertFromPlainText</a>(str), caption, <a name="l01609"></a>01609 <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKStdGuiItem.html#c049121d202b827e305100e335ce64da">KStdGuiItem::ok</a>(), <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKStdGuiItem.html#291290cb090360eda79920e35fd699f6">KStdGuiItem::cancel</a>()) == <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#7b65482f7d03a391aff64c73f7cae32a2a5a0869dd1dad4b9dc0a83308ec5f8c">KMessageBox::Yes</a>)); <a name="l01610"></a>01610 <span class="keywordflow">case</span> Window::Prompt: <a name="l01611"></a>01611 <span class="preprocessor">#ifndef KONQ_EMBEDDED</span> <a name="l01612"></a>01612 <span class="preprocessor"></span> <span class="keywordflow">if</span> (!widget->dialogsAllowed()) <a name="l01613"></a>01613 <span class="keywordflow">return</span> Undefined(); <a name="l01614"></a>01614 <span class="keywordflow">if</span> ( part && part->xmlDocImpl() ) <a name="l01615"></a>01615 part->xmlDocImpl()->updateRendering(); <a name="l01616"></a>01616 <span class="keywordflow">if</span> ( part ) <a name="l01617"></a>01617 emit part->browserExtension()->requestFocus(part); <a name="l01618"></a>01618 <span class="keywordtype">bool</span> ok; <a name="l01619"></a>01619 <span class="keywordflow">if</span> (args.size() >= 2) <a name="l01620"></a>01620 str2 = <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKInputDialog.html#c5b45989173987a07295bf7475f8546f">KInputDialog::getText</a>(caption, <a name="l01621"></a>01621 <a class="codeRef" doxygen="qt.tag:" href="qstylesheet.html#convertFromPlainText">QStyleSheet::convertFromPlainText</a>(str), <a name="l01622"></a>01622 args[1].<a class="code" href="classKJS_1_1Window.html#ca093715050915072a60d05ad73650f0">toString</a>(exec).qstring(), &ok, widget); <a name="l01623"></a>01623 <span class="keywordflow">else</span> <a name="l01624"></a>01624 str2 = <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKInputDialog.html#c5b45989173987a07295bf7475f8546f">KInputDialog::getText</a>(caption, <a name="l01625"></a>01625 <a class="codeRef" doxygen="qt.tag:" href="qstylesheet.html#convertFromPlainText">QStyleSheet::convertFromPlainText</a>(str), <a name="l01626"></a>01626 QString::null, &ok, widget); <a name="l01627"></a>01627 <span class="keywordflow">if</span> ( ok ) <a name="l01628"></a>01628 <span class="keywordflow">return</span> String(str2); <a name="l01629"></a>01629 <span class="keywordflow">else</span> <a name="l01630"></a>01630 <span class="keywordflow">return</span> Null(); <a name="l01631"></a>01631 <span class="preprocessor">#else</span> <a name="l01632"></a>01632 <span class="preprocessor"></span> <span class="keywordflow">return</span> Undefined(); <a name="l01633"></a>01633 <span class="preprocessor">#endif</span> <a name="l01634"></a>01634 <span class="preprocessor"></span> <span class="keywordflow">case</span> Window::GetComputedStyle: { <a name="l01635"></a>01635 <span class="keywordflow">if</span> ( !part || !part->xmlDocImpl() ) <a name="l01636"></a>01636 <span class="keywordflow">return</span> Undefined(); <a name="l01637"></a>01637 <a class="code" href="classDOM_1_1Node.html">DOM::Node</a> arg0 = <a class="code" href="namespaceKJS.html#0f9b0e57e5cd995454a83e4a23c230ea">toNode</a>(args[0]); <a name="l01638"></a>01638 <span class="keywordflow">if</span> (arg0.<a class="code" href="classDOM_1_1Node.html#5431b2a3b06ab764f8e78ba5b5cb892d">nodeType</a>() != DOM::Node::ELEMENT_NODE) <a name="l01639"></a>01639 <span class="keywordflow">return</span> Undefined(); <span class="comment">// throw exception?</span> <a name="l01640"></a>01640 <span class="keywordflow">else</span> <a name="l01641"></a>01641 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#6b06a29edf02ed31e081f2d5f447e870">getDOMCSSStyleDeclaration</a>(exec, part->document().defaultView().getComputedStyle(static_cast<DOM::Element>(arg0), <a name="l01642"></a>01642 args[1].<a class="code" href="classKJS_1_1Window.html#ca093715050915072a60d05ad73650f0">toString</a>(exec).string())); <a name="l01643"></a>01643 } <a name="l01644"></a>01644 <span class="keywordflow">case</span> Window::Open: <a name="l01645"></a>01645 <span class="keywordflow">return</span> window-><a class="code" href="classKJS_1_1Window.html#3fbc88455304ba04fcaa8fd59c3859eb">openWindow</a>(exec, args); <a name="l01646"></a>01646 <span class="keywordflow">case</span> Window::Close: { <a name="l01647"></a>01647 <span class="comment">/* From http://developer.netscape.com/docs/manuals/js/client/jsref/window.htm :</span> <a name="l01648"></a>01648 <span class="comment"> The close method closes only windows opened by JavaScript using the open method.</span> <a name="l01649"></a>01649 <span class="comment"> If you attempt to close any other window, a confirm is generated, which</span> <a name="l01650"></a>01650 <span class="comment"> lets the user choose whether the window closes.</span> <a name="l01651"></a>01651 <span class="comment"> This is a security feature to prevent "mail bombs" containing self.close().</span> <a name="l01652"></a>01652 <span class="comment"> However, if the window has only one document (the current one) in its</span> <a name="l01653"></a>01653 <span class="comment"> session history, the close is allowed without any confirm. This is a</span> <a name="l01654"></a>01654 <span class="comment"> special case for one-off windows that need to open other windows and</span> <a name="l01655"></a>01655 <span class="comment"> then dispose of themselves.</span> <a name="l01656"></a>01656 <span class="comment"> */</span> <a name="l01657"></a>01657 <span class="keywordtype">bool</span> doClose = <span class="keyword">false</span>; <a name="l01658"></a>01658 <span class="keywordflow">if</span> (!part->openedByJS()) <a name="l01659"></a>01659 { <a name="l01660"></a>01660 <span class="comment">// To conform to the SPEC, we only ask if the window</span> <a name="l01661"></a>01661 <span class="comment">// has more than one entry in the history (NS does that too).</span> <a name="l01662"></a>01662 History history(exec,part); <a name="l01663"></a>01663 <a name="l01664"></a>01664 <span class="keywordflow">if</span> ( history.get( exec, <span class="stringliteral">"length"</span> ).toInt32(exec) <= 1 ) <a name="l01665"></a>01665 { <a name="l01666"></a>01666 doClose = <span class="keyword">true</span>; <a name="l01667"></a>01667 } <a name="l01668"></a>01668 <span class="keywordflow">else</span> <a name="l01669"></a>01669 { <a name="l01670"></a>01670 <span class="comment">// Can we get this dialog with tabs??? Does it close the window or the tab in that case?</span> <a name="l01671"></a>01671 emit part->browserExtension()->requestFocus(part); <a name="l01672"></a>01672 <span class="keywordflow">if</span> ( <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#f1f1a8e08ec4af3c5fee67e2e553c96d">KMessageBox::questionYesNo</a>( window-><a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>()-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1Part.html#2d2efd56fe23904104c48dc56371c03d">widget</a>(), <a name="l01673"></a>01673 i18n(<span class="stringliteral">"Close window?"</span>), i18n(<span class="stringliteral">"Confirmation Required"</span>), <a name="l01674"></a>01674 <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKStdGuiItem.html#6122a094608e1bc5175e1c98b6fdd394">KStdGuiItem::close</a>(), <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKStdGuiItem.html#291290cb090360eda79920e35fd699f6">KStdGuiItem::cancel</a>() ) <a name="l01675"></a>01675 == <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#7b65482f7d03a391aff64c73f7cae32a2a5a0869dd1dad4b9dc0a83308ec5f8c">KMessageBox::Yes</a> ) <a name="l01676"></a>01676 doClose = <span class="keyword">true</span>; <a name="l01677"></a>01677 } <a name="l01678"></a>01678 } <a name="l01679"></a>01679 <span class="keywordflow">else</span> <a name="l01680"></a>01680 doClose = <span class="keyword">true</span>; <a name="l01681"></a>01681 <a name="l01682"></a>01682 <span class="keywordflow">if</span> (doClose) <a name="l01683"></a>01683 { <a name="l01684"></a>01684 <span class="comment">// If this is the current window (the one the interpreter runs in),</span> <a name="l01685"></a>01685 <span class="comment">// then schedule a delayed close (so that the script terminates first).</span> <a name="l01686"></a>01686 <span class="comment">// But otherwise, close immediately. This fixes w=window.open("","name");w.close();window.open("name");</span> <a name="l01687"></a>01687 <span class="keywordflow">if</span> ( <a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(exec) == window ) { <a name="l01688"></a>01688 <span class="keywordflow">if</span> (widget) { <a name="l01689"></a>01689 <span class="comment">// quit all dialogs of this view</span> <a name="l01690"></a>01690 <span class="comment">// this fixes 'setTimeout('self.close()',1000); alert("Hi");' crash</span> <a name="l01691"></a>01691 widget->closeChildDialogs(); <a name="l01692"></a>01692 } <a name="l01693"></a>01693 <span class="comment">//kdDebug() << "scheduling delayed close" << endl;</span> <a name="l01694"></a>01694 <span class="comment">// We'll close the window at the end of the script execution</span> <a name="l01695"></a>01695 <a class="code" href="classKJS_1_1Window.html">Window</a>* w = const_cast<Window*>(window); <a name="l01696"></a>01696 w-><a class="code" href="classKJS_1_1Window.html#37db1e97a8a62917926c807d9f9a9dad">m_delayed</a>.append( <a class="code" href="classKJS_1_1Window.html#667d4e831d325b6f987fbfededf70557">Window::DelayedAction</a>( Window::DelayedClose ) ); <a name="l01697"></a>01697 } <span class="keywordflow">else</span> { <a name="l01698"></a>01698 <span class="comment">//kdDebug() << "closing NOW" << endl;</span> <a name="l01699"></a>01699 (const_cast<Window*>(window))->closeNow(); <a name="l01700"></a>01700 } <a name="l01701"></a>01701 } <a name="l01702"></a>01702 <span class="keywordflow">return</span> Undefined(); <a name="l01703"></a>01703 } <a name="l01704"></a>01704 <span class="keywordflow">case</span> Window::Navigate: <a name="l01705"></a>01705 window-><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, args[0].<a class="code" href="classKJS_1_1Window.html#ca093715050915072a60d05ad73650f0">toString</a>(exec).qstring(), <span class="keyword">false</span> <span class="comment">/*don't lock history*/</span>); <a name="l01706"></a>01706 <span class="keywordflow">return</span> Undefined(); <a name="l01707"></a>01707 <span class="keywordflow">case</span> Window::Focus: { <a name="l01708"></a>01708 <a class="code" href="classKHTMLSettings.html#a58ad58af55072da395ebb685f15252c">KHTMLSettings::KJSWindowFocusPolicy</a> policy = <a name="l01709"></a>01709 part->settings()->windowFocusPolicy(part->url().host()); <a name="l01710"></a>01710 <span class="keywordflow">if</span>(policy == KHTMLSettings::KJSWindowFocusAllow && widget) { <a name="l01711"></a>01711 widget->topLevelWidget()->raise(); <a name="l01712"></a>01712 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKWin.html#7c7d66a1bd6078f8d95e8ba4f3ada195">KWin::deIconifyWindow</a>( widget->topLevelWidget()->winId() ); <a name="l01713"></a>01713 widget->setActiveWindow(); <a name="l01714"></a>01714 emit part->browserExtension()->requestFocus(part); <a name="l01715"></a>01715 } <a name="l01716"></a>01716 <span class="keywordflow">return</span> Undefined(); <a name="l01717"></a>01717 } <a name="l01718"></a>01718 <span class="keywordflow">case</span> Window::Blur: <a name="l01719"></a>01719 <span class="comment">// TODO</span> <a name="l01720"></a>01720 <span class="keywordflow">return</span> Undefined(); <a name="l01721"></a>01721 <span class="keywordflow">case</span> Window::BToA: <a name="l01722"></a>01722 <span class="keywordflow">case</span> Window::AToB: { <a name="l01723"></a>01723 <span class="keywordflow">if</span> (!s.is8Bit()) <a name="l01724"></a>01724 <span class="keywordflow">return</span> Undefined(); <a name="l01725"></a>01725 <a class="codeRef" doxygen="qt.tag:" href="qbytearray.html">QByteArray</a> in, out; <a name="l01726"></a>01726 <span class="keywordtype">char</span> *binData = s.ascii(); <a name="l01727"></a>01727 in.setRawData( binData, s.size() ); <a name="l01728"></a>01728 <span class="keywordflow">if</span> (<span class="keywordtype">id</span> == Window::AToB) <a name="l01729"></a>01729 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKCodecs.html#c864c3214222aebb7b8a63606adc23a2">KCodecs::base64Decode</a>( in, out ); <a name="l01730"></a>01730 <span class="keywordflow">else</span> <a name="l01731"></a>01731 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKCodecs.html#f3618487a2e25e26e397487d3130758a">KCodecs::base64Encode</a>( in, out ); <a name="l01732"></a>01732 in.resetRawData( binData, s.size() ); <a name="l01733"></a>01733 UChar *d = <span class="keyword">new</span> UChar[out.size()]; <a name="l01734"></a>01734 <span class="keywordflow">for</span> (uint i = 0; i < out.size(); i++) <a name="l01735"></a>01735 d[i].uc = (uchar) out[i]; <a name="l01736"></a>01736 UString ret(d, out.size(), <span class="keyword">false</span> <span class="comment">/*no copy*/</span>); <a name="l01737"></a>01737 <span class="keywordflow">return</span> String(ret); <a name="l01738"></a>01738 } <a name="l01739"></a>01739 <a name="l01740"></a>01740 }; <a name="l01741"></a>01741 <a name="l01742"></a>01742 <a name="l01743"></a>01743 <span class="comment">// now unsafe functions..</span> <a name="l01744"></a>01744 <span class="keywordflow">if</span> (!window-><a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l01745"></a>01745 <span class="keywordflow">return</span> Undefined(); <a name="l01746"></a>01746 <a name="l01747"></a>01747 <span class="keywordflow">switch</span> (<span class="keywordtype">id</span>) { <a name="l01748"></a>01748 <span class="keywordflow">case</span> Window::ScrollBy: <a name="l01749"></a>01749 <span class="keywordflow">if</span>(args.size() == 2 && widget) <a name="l01750"></a>01750 widget->scrollBy(args[0].toInt32(exec), args[1].toInt32(exec)); <a name="l01751"></a>01751 <span class="keywordflow">return</span> Undefined(); <a name="l01752"></a>01752 <span class="keywordflow">case</span> Window::Scroll: <a name="l01753"></a>01753 <span class="keywordflow">case</span> Window::ScrollTo: <a name="l01754"></a>01754 <span class="keywordflow">if</span>(args.size() == 2 && widget) <a name="l01755"></a>01755 widget->setContentsPos(args[0].toInt32(exec), args[1].toInt32(exec)); <a name="l01756"></a>01756 <span class="keywordflow">return</span> Undefined(); <a name="l01757"></a>01757 <span class="keywordflow">case</span> Window::MoveBy: { <a name="l01758"></a>01758 <a class="code" href="classKHTMLSettings.html#11af2dc8e2dd71c0b1546107b32753f4">KHTMLSettings::KJSWindowMovePolicy</a> policy = <a name="l01759"></a>01759 part->settings()->windowMovePolicy(part->url().host()); <a name="l01760"></a>01760 <span class="keywordflow">if</span>(policy == KHTMLSettings::KJSWindowMoveAllow && args.size() == 2 && widget) <a name="l01761"></a>01761 { <a name="l01762"></a>01762 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *ext = part->browserExtension(); <a name="l01763"></a>01763 <span class="keywordflow">if</span> (ext) { <a name="l01764"></a>01764 <a class="codeRef" doxygen="qt.tag:" href="qwidget.html">QWidget</a> * tl = widget->topLevelWidget(); <a name="l01765"></a>01765 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> sg = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobalSettings.html#63f7c20327cdb7972e2aff9b765b8985">KGlobalSettings::desktopGeometry</a>(tl); <a name="l01766"></a>01766 <a name="l01767"></a>01767 <a class="codeRef" doxygen="qt.tag:" href="qpoint.html">QPoint</a> dest = tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#pos">pos</a>() + <a class="codeRef" doxygen="qt.tag:" href="qpoint.html">QPoint</a>( args[0].toInt32(exec), args[1].toInt32(exec) ); <a name="l01768"></a>01768 <span class="comment">// Security check (the spec talks about UniversalBrowserWrite to disable this check...)</span> <a name="l01769"></a>01769 <span class="keywordflow">if</span> ( dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#x">x</a>() >= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>() && dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#y">y</a>() >= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>() && <a name="l01770"></a>01770 dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#x">x</a>()+tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#width">width</a>() <= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>()+sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>() && <a name="l01771"></a>01771 dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#y">y</a>()+tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#height">height</a>() <= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>()+sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>() ) <a name="l01772"></a>01772 emit ext->moveTopLevelWidget( dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#x">x</a>(), dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#y">y</a>() ); <a name="l01773"></a>01773 } <a name="l01774"></a>01774 } <a name="l01775"></a>01775 <span class="keywordflow">return</span> Undefined(); <a name="l01776"></a>01776 } <a name="l01777"></a>01777 <span class="keywordflow">case</span> Window::MoveTo: { <a name="l01778"></a>01778 <a class="code" href="classKHTMLSettings.html#11af2dc8e2dd71c0b1546107b32753f4">KHTMLSettings::KJSWindowMovePolicy</a> policy = <a name="l01779"></a>01779 part->settings()->windowMovePolicy(part->url().host()); <a name="l01780"></a>01780 <span class="keywordflow">if</span>(policy == KHTMLSettings::KJSWindowMoveAllow && args.size() == 2 && widget) <a name="l01781"></a>01781 { <a name="l01782"></a>01782 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *ext = part->browserExtension(); <a name="l01783"></a>01783 <span class="keywordflow">if</span> (ext) { <a name="l01784"></a>01784 <a class="codeRef" doxygen="qt.tag:" href="qwidget.html">QWidget</a> * tl = widget-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#topLevelWidget">topLevelWidget</a>(); <a name="l01785"></a>01785 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> sg = <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKGlobalSettings.html#63f7c20327cdb7972e2aff9b765b8985">KGlobalSettings::desktopGeometry</a>(tl); <a name="l01786"></a>01786 <a name="l01787"></a>01787 <a class="codeRef" doxygen="qt.tag:" href="qpoint.html">QPoint</a> dest( args[0].toInt32(exec)+sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>(), args[1].toInt32(exec)+sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>() ); <a name="l01788"></a>01788 <span class="comment">// Security check (the spec talks about UniversalBrowserWrite to disable this check...)</span> <a name="l01789"></a>01789 <span class="keywordflow">if</span> ( dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#x">x</a>() >= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>() && dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#y">y</a>() >= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>() && <a name="l01790"></a>01790 dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#x">x</a>()+tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#width">width</a>() <= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>()+sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#x">x</a>() && <a name="l01791"></a>01791 dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#y">y</a>()+tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#height">height</a>() <= sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>()+sg.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#y">y</a>() ) <a name="l01792"></a>01792 emit ext->moveTopLevelWidget( dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#x">x</a>(), dest.<a class="codeRef" doxygen="qt.tag:" href="qpoint.html#y">y</a>() ); <a name="l01793"></a>01793 } <a name="l01794"></a>01794 } <a name="l01795"></a>01795 <span class="keywordflow">return</span> Undefined(); <a name="l01796"></a>01796 } <a name="l01797"></a>01797 <span class="keywordflow">case</span> Window::ResizeBy: { <a name="l01798"></a>01798 <a class="code" href="classKHTMLSettings.html#54d08c6612b3f5d2829c7e2f554ed6cb">KHTMLSettings::KJSWindowResizePolicy</a> policy = <a name="l01799"></a>01799 part->settings()->windowResizePolicy(part->url().host()); <a name="l01800"></a>01800 <span class="keywordflow">if</span>(policy == KHTMLSettings::KJSWindowResizeAllow <a name="l01801"></a>01801 && args.size() == 2 && widget) <a name="l01802"></a>01802 { <a name="l01803"></a>01803 <a class="codeRef" doxygen="qt.tag:" href="qwidget.html">QWidget</a> * tl = widget-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#topLevelWidget">topLevelWidget</a>(); <a name="l01804"></a>01804 <a class="codeRef" doxygen="qt.tag:" href="qrect.html">QRect</a> geom = tl-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#frameGeometry">frameGeometry</a>(); <a name="l01805"></a>01805 window-><a class="code" href="classKJS_1_1Window.html#2cc8dafc364a8c79cd644dfeb3ea3472">resizeTo</a>( tl, <a name="l01806"></a>01806 geom.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#width">width</a>() + args[0].toInt32(exec), <a name="l01807"></a>01807 geom.<a class="codeRef" doxygen="qt.tag:" href="qrect.html#height">height</a>() + args[1].toInt32(exec) ); <a name="l01808"></a>01808 } <a name="l01809"></a>01809 <span class="keywordflow">return</span> Undefined(); <a name="l01810"></a>01810 } <a name="l01811"></a>01811 <span class="keywordflow">case</span> Window::ResizeTo: { <a name="l01812"></a>01812 <a class="code" href="classKHTMLSettings.html#54d08c6612b3f5d2829c7e2f554ed6cb">KHTMLSettings::KJSWindowResizePolicy</a> policy = <a name="l01813"></a>01813 part->settings()->windowResizePolicy(part->url().host()); <a name="l01814"></a>01814 <span class="keywordflow">if</span>(policy == KHTMLSettings::KJSWindowResizeAllow <a name="l01815"></a>01815 && args.size() == 2 && widget) <a name="l01816"></a>01816 { <a name="l01817"></a>01817 <a class="codeRef" doxygen="qt.tag:" href="qwidget.html">QWidget</a> * tl = widget-><a class="codeRef" doxygen="qt.tag:" href="qwidget.html#topLevelWidget">topLevelWidget</a>(); <a name="l01818"></a>01818 window-><a class="code" href="classKJS_1_1Window.html#2cc8dafc364a8c79cd644dfeb3ea3472">resizeTo</a>( tl, args[0].toInt32(exec), args[1].toInt32(exec) ); <a name="l01819"></a>01819 } <a name="l01820"></a>01820 <span class="keywordflow">return</span> Undefined(); <a name="l01821"></a>01821 } <a name="l01822"></a>01822 <span class="keywordflow">case</span> Window::SetTimeout: <a name="l01823"></a>01823 <span class="keywordflow">case</span> Window::SetInterval: { <a name="l01824"></a>01824 <span class="keywordtype">bool</span> singleShot; <a name="l01825"></a>01825 <span class="keywordtype">int</span> i; <span class="comment">// timeout interval</span> <a name="l01826"></a>01826 <span class="keywordflow">if</span> (args.size() == 0) <a name="l01827"></a>01827 <span class="keywordflow">return</span> Undefined(); <a name="l01828"></a>01828 <span class="keywordflow">if</span> (args.size() > 1) { <a name="l01829"></a>01829 singleShot = (<span class="keywordtype">id</span> == Window::SetTimeout); <a name="l01830"></a>01830 i = args[1].toInt32(exec); <a name="l01831"></a>01831 } <span class="keywordflow">else</span> { <a name="l01832"></a>01832 <span class="comment">// second parameter is missing. Emulate Mozilla behavior.</span> <a name="l01833"></a>01833 singleShot = <span class="keyword">true</span>; <a name="l01834"></a>01834 i = 4; <a name="l01835"></a>01835 } <a name="l01836"></a>01836 <span class="keywordflow">if</span> (v.isA(StringType)) { <a name="l01837"></a>01837 <span class="keywordtype">int</span> r = (const_cast<Window*>(window))->winq->installTimeout(Identifier(s), i, singleShot ); <a name="l01838"></a>01838 <span class="keywordflow">return</span> Number(r); <a name="l01839"></a>01839 } <a name="l01840"></a>01840 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (v.isA(ObjectType) && Object::dynamicCast(v).implementsCall()) { <a name="l01841"></a>01841 Object func = Object::dynamicCast(v); <a name="l01842"></a>01842 List funcArgs; <a name="l01843"></a>01843 ListIterator it = args.begin(); <a name="l01844"></a>01844 <span class="keywordtype">int</span> argno = 0; <a name="l01845"></a>01845 <span class="keywordflow">while</span> (it != args.end()) { <a name="l01846"></a>01846 Value arg = it++; <a name="l01847"></a>01847 <span class="keywordflow">if</span> (argno++ >= 2) <a name="l01848"></a>01848 funcArgs.append(arg); <a name="l01849"></a>01849 } <a name="l01850"></a>01850 <span class="keywordflow">if</span> (args.size() < 2) <a name="l01851"></a>01851 funcArgs.append(Number(i)); <a name="l01852"></a>01852 <span class="keywordtype">int</span> r = (const_cast<Window*>(window))->winq->installTimeout(func, funcArgs, i, singleShot ); <a name="l01853"></a>01853 <span class="keywordflow">return</span> Number(r); <a name="l01854"></a>01854 } <a name="l01855"></a>01855 <span class="keywordflow">else</span> <a name="l01856"></a>01856 <span class="keywordflow">return</span> Undefined(); <a name="l01857"></a>01857 } <a name="l01858"></a>01858 <span class="keywordflow">case</span> Window::ClearTimeout: <a name="l01859"></a>01859 <span class="keywordflow">case</span> Window::ClearInterval: <a name="l01860"></a>01860 (const_cast<Window*>(window))->winq->clearTimeout(v.toInt32(exec)); <a name="l01861"></a>01861 <span class="keywordflow">return</span> Undefined(); <a name="l01862"></a>01862 <span class="keywordflow">case</span> Window::Print: <a name="l01863"></a>01863 <span class="keywordflow">if</span> ( widget ) { <a name="l01864"></a>01864 <span class="comment">// ### TODO emit onbeforeprint event</span> <a name="l01865"></a>01865 widget->print(); <a name="l01866"></a>01866 <span class="comment">// ### TODO emit onafterprint event</span> <a name="l01867"></a>01867 } <a name="l01868"></a>01868 <span class="keywordflow">case</span> Window::CaptureEvents: <a name="l01869"></a>01869 <span class="keywordflow">case</span> Window::ReleaseEvents: <a name="l01870"></a>01870 <span class="comment">// Do nothing for now. These are NS-specific legacy calls.</span> <a name="l01871"></a>01871 <span class="keywordflow">break</span>; <a name="l01872"></a>01872 <span class="keywordflow">case</span> Window::AddEventListener: { <a name="l01873"></a>01873 <a class="code" href="classKJS_1_1JSEventListener.html">JSEventListener</a> *listener = <a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(exec)-><a class="code" href="classKJS_1_1Window.html#8deaa03602259a888575e0165344e1c6">getJSEventListener</a>(args[1]); <a name="l01874"></a>01874 <span class="keywordflow">if</span> (listener) { <a name="l01875"></a>01875 DOM::DocumentImpl* docimpl = static_cast<DOM::DocumentImpl *>(part->document().handle()); <a name="l01876"></a>01876 docimpl->addWindowEventListener(DOM::EventImpl::typeToId(args[0].<a class="code" href="classKJS_1_1Window.html#ca093715050915072a60d05ad73650f0">toString</a>(exec).string()),listener,args[2].<a class="code" href="classKJS_1_1Window.html#66a43d90b54ce4fa8916f5e64ea9feb4">toBoolean</a>(exec)); <a name="l01877"></a>01877 } <a name="l01878"></a>01878 <span class="keywordflow">return</span> Undefined(); <a name="l01879"></a>01879 } <a name="l01880"></a>01880 <span class="keywordflow">case</span> Window::RemoveEventListener: { <a name="l01881"></a>01881 <a class="code" href="classKJS_1_1JSEventListener.html">JSEventListener</a> *listener = <a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(exec)-><a class="code" href="classKJS_1_1Window.html#8deaa03602259a888575e0165344e1c6">getJSEventListener</a>(args[1]); <a name="l01882"></a>01882 <span class="keywordflow">if</span> (listener) { <a name="l01883"></a>01883 DOM::DocumentImpl* docimpl = static_cast<DOM::DocumentImpl *>(part->document().handle()); <a name="l01884"></a>01884 docimpl->removeWindowEventListener(DOM::EventImpl::typeToId(args[0].<a class="code" href="classKJS_1_1Window.html#ca093715050915072a60d05ad73650f0">toString</a>(exec).string()),listener,args[2].<a class="code" href="classKJS_1_1Window.html#66a43d90b54ce4fa8916f5e64ea9feb4">toBoolean</a>(exec)); <a name="l01885"></a>01885 } <a name="l01886"></a>01886 <span class="keywordflow">return</span> Undefined(); <a name="l01887"></a>01887 } <a name="l01888"></a>01888 <a name="l01889"></a>01889 } <a name="l01890"></a>01890 <span class="keywordflow">return</span> Undefined(); <a name="l01891"></a>01891 } <a name="l01892"></a>01892 <a name="l01894"></a>01894 <a name="l01895"></a>01895 <span class="comment">// KDE 4: Make those parameters const ... &</span> <a name="l01896"></a><a class="code" href="classKJS_1_1ScheduledAction.html#42882828cddd42b39ec5df6390dbb54a">01896</a> <a class="code" href="classKJS_1_1ScheduledAction.html#42882828cddd42b39ec5df6390dbb54a">ScheduledAction::ScheduledAction</a>(Object _func, List _args, <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> _nextTime, <span class="keywordtype">int</span> _interval, <span class="keywordtype">bool</span> _singleShot, <a name="l01897"></a>01897 <span class="keywordtype">int</span> _timerId) <a name="l01898"></a>01898 { <a name="l01899"></a>01899 <span class="comment">//kdDebug(6070) << "ScheduledAction::ScheduledAction(isFunction) " << this << endl;</span> <a name="l01900"></a>01900 <a class="code" href="classKJS_1_1ScheduledAction.html#0324575b2f062109ea71ba080bb0b520">func</a> = static_cast<ObjectImp*>(_func.imp()); <a name="l01901"></a>01901 args = _args; <a name="l01902"></a>01902 <a class="code" href="classKJS_1_1ScheduledAction.html#fa8db43df4ea661597576a8d43de0a09">isFunction</a> = <span class="keyword">true</span>; <a name="l01903"></a>01903 singleShot = _singleShot; <a name="l01904"></a>01904 <a class="code" href="classKJS_1_1ScheduledAction.html#cdf31d5493617493ea7381bce4f8dc45">nextTime</a> = _nextTime; <a name="l01905"></a>01905 <a class="code" href="classKJS_1_1ScheduledAction.html#aa6d46ec4fdcf8454568967a7f7cf29a">interval</a> = _interval; <a name="l01906"></a>01906 <a class="code" href="classKJS_1_1ScheduledAction.html#7b10afe806b1c20dcf8a1d543991ab6a">executing</a> = <span class="keyword">false</span>; <a name="l01907"></a>01907 <a class="code" href="classKJS_1_1ScheduledAction.html#bfa6ec19d3c85ff79c511cc9e15d8e7f">timerId</a> = _timerId; <a name="l01908"></a>01908 } <a name="l01909"></a>01909 <a name="l01910"></a>01910 <span class="comment">// KDE 4: Make it const QString &</span> <a name="l01911"></a><a class="code" href="classKJS_1_1ScheduledAction.html#8f23baa426c30b284e254893f9b8266f">01911</a> <a class="code" href="classKJS_1_1ScheduledAction.html#42882828cddd42b39ec5df6390dbb54a">ScheduledAction::ScheduledAction</a>(<a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> _code, <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> _nextTime, <span class="keywordtype">int</span> _interval, <span class="keywordtype">bool</span> _singleShot, <span class="keywordtype">int</span> _timerId) <a name="l01912"></a>01912 { <a name="l01913"></a>01913 <span class="comment">//kdDebug(6070) << "ScheduledAction::ScheduledAction(!isFunction) " << this << endl;</span> <a name="l01914"></a>01914 <span class="comment">//func = 0;</span> <a name="l01915"></a>01915 <span class="comment">//args = 0;</span> <a name="l01916"></a>01916 <a class="code" href="classKJS_1_1ScheduledAction.html#0324575b2f062109ea71ba080bb0b520">func</a> = 0; <a name="l01917"></a>01917 <a class="code" href="classKJS_1_1ScheduledAction.html#02f04cf03468182f6fbea454db5c3525">code</a> = _code; <a name="l01918"></a>01918 <a class="code" href="classKJS_1_1ScheduledAction.html#fa8db43df4ea661597576a8d43de0a09">isFunction</a> = <span class="keyword">false</span>; <a name="l01919"></a>01919 singleShot = _singleShot; <a name="l01920"></a>01920 <a class="code" href="classKJS_1_1ScheduledAction.html#cdf31d5493617493ea7381bce4f8dc45">nextTime</a> = _nextTime; <a name="l01921"></a>01921 <a class="code" href="classKJS_1_1ScheduledAction.html#aa6d46ec4fdcf8454568967a7f7cf29a">interval</a> = _interval; <a name="l01922"></a>01922 <a class="code" href="classKJS_1_1ScheduledAction.html#7b10afe806b1c20dcf8a1d543991ab6a">executing</a> = <span class="keyword">false</span>; <a name="l01923"></a>01923 <a class="code" href="classKJS_1_1ScheduledAction.html#bfa6ec19d3c85ff79c511cc9e15d8e7f">timerId</a> = _timerId; <a name="l01924"></a>01924 } <a name="l01925"></a>01925 <a name="l01926"></a><a class="code" href="classKJS_1_1ScheduledAction.html#08131757247b514cebb9ebe936a39c7a">01926</a> <span class="keywordtype">bool</span> <a class="code" href="classKJS_1_1ScheduledAction.html#08131757247b514cebb9ebe936a39c7a">ScheduledAction::execute</a>(<a class="code" href="classKJS_1_1Window.html">Window</a> *window) <a name="l01927"></a>01927 { <a name="l01928"></a>01928 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *part = ::qt_cast<KHTMLPart *>(window-><a class="code" href="classKJS_1_1Window.html#7cd670037d441bcf4553ae399b17432e">m_frame</a>->m_part); <a name="l01929"></a>01929 <span class="keywordflow">if</span> (!part || !part-><a class="code" href="classKHTMLPart.html#aacab2d02df2bf84d91ab68d50a1a689">jScriptEnabled</a>()) <a name="l01930"></a>01930 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l01931"></a>01931 <a class="code" href="classKJS_1_1ScriptInterpreter.html">ScriptInterpreter</a> *interpreter = static_cast<ScriptInterpreter *>(part-><a class="code" href="classKHTMLPart.html#412dace1a184977a5160aeead9e5b82b">jScript</a>()-><a class="code" href="classKJSProxy.html#3a998f62916bf64732108d81fe6d4470">interpreter</a>()); <a name="l01932"></a>01932 <a name="l01933"></a>01933 interpreter-><a class="code" href="classKJS_1_1ScriptInterpreter.html#0d0e3b628264e9a6d313142a63d4b236">setProcessingTimerCallback</a>(<span class="keyword">true</span>); <a name="l01934"></a>01934 <a name="l01935"></a>01935 <span class="comment">//kdDebug(6070) << "ScheduledAction::execute " << this << endl;</span> <a name="l01936"></a>01936 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1ScheduledAction.html#fa8db43df4ea661597576a8d43de0a09">isFunction</a>) { <a name="l01937"></a>01937 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1ScheduledAction.html#0324575b2f062109ea71ba080bb0b520">func</a>->implementsCall()) { <a name="l01938"></a>01938 <span class="comment">// #### check this</span> <a name="l01939"></a>01939 Q_ASSERT( part ); <a name="l01940"></a>01940 <span class="keywordflow">if</span> ( part ) <a name="l01941"></a>01941 { <a name="l01942"></a>01942 KJS::Interpreter *interpreter = part->jScript()->interpreter(); <a name="l01943"></a>01943 ExecState *exec = interpreter->globalExec(); <a name="l01944"></a>01944 Q_ASSERT( window == interpreter->globalObject().imp() ); <a name="l01945"></a>01945 Object obj( window ); <a name="l01946"></a>01946 <a class="code" href="classKJS_1_1ScheduledAction.html#0324575b2f062109ea71ba080bb0b520">func</a>->call(exec,obj,args); <span class="comment">// note that call() creates its own execution state for the func call</span> <a name="l01947"></a>01947 <span class="keywordflow">if</span> (exec->hadException()) <a name="l01948"></a>01948 exec->clearException(); <a name="l01949"></a>01949 <a name="l01950"></a>01950 <span class="comment">// Update our document's rendering following the execution of the timeout callback.</span> <a name="l01951"></a>01951 part->document().updateRendering(); <a name="l01952"></a>01952 } <a name="l01953"></a>01953 } <a name="l01954"></a>01954 } <a name="l01955"></a>01955 <span class="keywordflow">else</span> { <a name="l01956"></a>01956 part-><a class="code" href="classKHTMLPart.html#c1dd647eddc9dd2bde9bff6b7294f2c0">executeScript</a>(<a class="code" href="classDOM_1_1Node.html">DOM::Node</a>(), <a class="code" href="classKJS_1_1ScheduledAction.html#02f04cf03468182f6fbea454db5c3525">code</a>); <a name="l01957"></a>01957 } <a name="l01958"></a>01958 <a name="l01959"></a>01959 interpreter-><a class="code" href="classKJS_1_1ScriptInterpreter.html#0d0e3b628264e9a6d313142a63d4b236">setProcessingTimerCallback</a>(<span class="keyword">false</span>); <a name="l01960"></a>01960 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l01961"></a>01961 } <a name="l01962"></a>01962 <a name="l01963"></a><a class="code" href="classKJS_1_1ScheduledAction.html#da95b86759dd7d51aa17f545273638d8">01963</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1ScheduledAction.html#da95b86759dd7d51aa17f545273638d8">ScheduledAction::mark</a>() <a name="l01964"></a>01964 { <a name="l01965"></a>01965 <span class="keywordflow">if</span> (<a class="code" href="classKJS_1_1ScheduledAction.html#0324575b2f062109ea71ba080bb0b520">func</a> && !<a class="code" href="classKJS_1_1ScheduledAction.html#0324575b2f062109ea71ba080bb0b520">func</a>->marked()) <a name="l01966"></a>01966 <a class="code" href="classKJS_1_1ScheduledAction.html#0324575b2f062109ea71ba080bb0b520">func</a>->mark(); <a name="l01967"></a>01967 args.mark(); <a name="l01968"></a>01968 } <a name="l01969"></a>01969 <a name="l01970"></a><a class="code" href="classKJS_1_1ScheduledAction.html#e2b16a8b29ab5a4cb599494e05f6ccda">01970</a> <a class="code" href="classKJS_1_1ScheduledAction.html#e2b16a8b29ab5a4cb599494e05f6ccda">ScheduledAction::~ScheduledAction</a>() <a name="l01971"></a>01971 { <a name="l01972"></a>01972 <span class="comment">//kdDebug(6070) << "ScheduledAction::~ScheduledAction " << this << endl;</span> <a name="l01973"></a>01973 } <a name="l01974"></a>01974 <a name="l01976"></a>01976 <a name="l01977"></a><a class="code" href="classKJS_1_1WindowQObject.html#4629e4760d6a316d5af0554a615c5900">01977</a> <a class="code" href="classKJS_1_1WindowQObject.html#4629e4760d6a316d5af0554a615c5900">WindowQObject::WindowQObject</a>(<a class="code" href="classKJS_1_1Window.html">Window</a> *w) <a name="l01978"></a>01978 : parent(w) <a name="l01979"></a>01979 { <a name="l01980"></a>01980 <span class="comment">//kdDebug(6070) << "WindowQObject::WindowQObject " << this << endl;</span> <a name="l01981"></a>01981 <span class="keywordflow">if</span> ( !<a class="codeRef" doxygen="qt.tag:" href="qobject.html#parent">parent</a>->m_frame ) <a name="l01982"></a>01982 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"WARNING: null part in "</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg634e2de2b699b31ea3a79f984e836d64">k_funcinfo</a> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l01983"></a>01983 <span class="keywordflow">else</span> <a name="l01984"></a>01984 <a class="codeRef" doxygen="qt.tag:" href="qobject.html#connect">connect</a>( <a class="codeRef" doxygen="qt.tag:" href="qobject.html#parent">parent</a>->m_frame, SIGNAL( <a class="codeRef" doxygen="qt.tag:" href="qobject.html#destroyed">destroyed</a>() ), <a name="l01985"></a>01985 <span class="keyword">this</span>, SLOT( <a class="code" href="classKJS_1_1WindowQObject.html#5068af0759b2038e3d70d9698554795d">parentDestroyed</a>() ) ); <a name="l01986"></a>01986 pausedTime = 0; <a name="l01987"></a>01987 lastTimerId = 0; <a name="l01988"></a>01988 currentlyDispatching = <span class="keyword">false</span>; <a name="l01989"></a>01989 } <a name="l01990"></a>01990 <a name="l01991"></a><a class="code" href="classKJS_1_1WindowQObject.html#6d6ec33b0084b6a1d20e35cad78e16c3">01991</a> <a class="code" href="classKJS_1_1WindowQObject.html#6d6ec33b0084b6a1d20e35cad78e16c3">WindowQObject::~WindowQObject</a>() <a name="l01992"></a>01992 { <a name="l01993"></a>01993 <span class="comment">//kdDebug(6070) << "WindowQObject::~WindowQObject " << this << endl;</span> <a name="l01994"></a>01994 <a class="code" href="classKJS_1_1WindowQObject.html#5068af0759b2038e3d70d9698554795d">parentDestroyed</a>(); <span class="comment">// reuse same code</span> <a name="l01995"></a>01995 } <a name="l01996"></a>01996 <a name="l01997"></a><a class="code" href="classKJS_1_1WindowQObject.html#5068af0759b2038e3d70d9698554795d">01997</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1WindowQObject.html#5068af0759b2038e3d70d9698554795d">WindowQObject::parentDestroyed</a>() <a name="l01998"></a>01998 { <a name="l01999"></a>01999 <a class="codeRef" doxygen="qt.tag:" href="qobject.html#killTimers">killTimers</a>(); <a name="l02000"></a>02000 <a name="l02001"></a>02001 <a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html">QPtrListIterator<ScheduledAction></a> it(scheduledActions); <a name="l02002"></a>02002 <span class="keywordflow">for</span> (; it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); ++it) <a name="l02003"></a>02003 <span class="keyword">delete</span> it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); <a name="l02004"></a>02004 scheduledActions.clear(); <a name="l02005"></a>02005 } <a name="l02006"></a>02006 <a name="l02007"></a><a class="code" href="classKJS_1_1WindowQObject.html#94b5b54d1cd3221501f8e5d7a5463fa0">02007</a> <span class="keywordtype">int</span> <a class="code" href="classKJS_1_1WindowQObject.html#94b5b54d1cd3221501f8e5d7a5463fa0">WindowQObject::installTimeout</a>(<span class="keyword">const</span> Identifier &handler, <span class="keywordtype">int</span> t, <span class="keywordtype">bool</span> singleShot) <a name="l02008"></a>02008 { <a name="l02009"></a>02009 <span class="keywordtype">int</span> <span class="keywordtype">id</span> = ++lastTimerId; <a name="l02010"></a>02010 <span class="keywordflow">if</span> (t < 10) t = 10; <a name="l02011"></a>02011 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> nextTime = <a class="code" href="classKJS_1_1DateTimeMS.html#beca93d3552e8ff8c8122249213e6189">DateTimeMS::now</a>().<a class="code" href="classKJS_1_1DateTimeMS.html#5f9ce9a03af17e330b14ad6f7a41db15">addMSecs</a>(-pausedTime + t); <a name="l02012"></a>02012 <a name="l02013"></a>02013 <a class="code" href="classKJS_1_1ScheduledAction.html">ScheduledAction</a> *action = <span class="keyword">new</span> <a class="code" href="classKJS_1_1ScheduledAction.html">ScheduledAction</a>(handler.qstring(),nextTime,t,singleShot,id); <a name="l02014"></a>02014 scheduledActions.append(action); <a name="l02015"></a>02015 <a class="code" href="classKJS_1_1WindowQObject.html#fce03932be633e3f45b74eff80c3e2b2">setNextTimer</a>(); <a name="l02016"></a>02016 <span class="keywordflow">return</span> id; <a name="l02017"></a>02017 } <a name="l02018"></a>02018 <a name="l02019"></a><a class="code" href="classKJS_1_1WindowQObject.html#194ecf0b38f310f21d0835b8ac936237">02019</a> <span class="keywordtype">int</span> <a class="code" href="classKJS_1_1WindowQObject.html#94b5b54d1cd3221501f8e5d7a5463fa0">WindowQObject::installTimeout</a>(<span class="keyword">const</span> Value &func, List args, <span class="keywordtype">int</span> t, <span class="keywordtype">bool</span> singleShot) <a name="l02020"></a>02020 { <a name="l02021"></a>02021 Object objFunc = Object::dynamicCast( func ); <a name="l02022"></a>02022 <span class="keywordflow">if</span> (!objFunc.isValid()) <a name="l02023"></a>02023 <span class="keywordflow">return</span> 0; <a name="l02024"></a>02024 <span class="keywordtype">int</span> <span class="keywordtype">id</span> = ++lastTimerId; <a name="l02025"></a>02025 <span class="keywordflow">if</span> (t < 10) t = 10; <a name="l02026"></a>02026 <a name="l02027"></a>02027 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> nextTime = <a class="code" href="classKJS_1_1DateTimeMS.html#beca93d3552e8ff8c8122249213e6189">DateTimeMS::now</a>().<a class="code" href="classKJS_1_1DateTimeMS.html#5f9ce9a03af17e330b14ad6f7a41db15">addMSecs</a>(-pausedTime + t); <a name="l02028"></a>02028 <a class="code" href="classKJS_1_1ScheduledAction.html">ScheduledAction</a> *action = <span class="keyword">new</span> <a class="code" href="classKJS_1_1ScheduledAction.html">ScheduledAction</a>(objFunc,args,nextTime,t,singleShot,<span class="keywordtype">id</span>); <a name="l02029"></a>02029 scheduledActions.append(action); <a name="l02030"></a>02030 <a class="code" href="classKJS_1_1WindowQObject.html#fce03932be633e3f45b74eff80c3e2b2">setNextTimer</a>(); <a name="l02031"></a>02031 <span class="keywordflow">return</span> id; <a name="l02032"></a>02032 } <a name="l02033"></a>02033 <a name="l02034"></a><a class="code" href="classKJS_1_1WindowQObject.html#4ad0231143a86eeb04b484e9df0d34fb">02034</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1WindowQObject.html#4ad0231143a86eeb04b484e9df0d34fb">WindowQObject::clearTimeout</a>(<span class="keywordtype">int</span> timerId) <a name="l02035"></a>02035 { <a name="l02036"></a>02036 <a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html">QPtrListIterator<ScheduledAction></a> it(scheduledActions); <a name="l02037"></a>02037 <span class="keywordflow">for</span> (; it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); ++it) { <a name="l02038"></a>02038 <a class="code" href="classKJS_1_1ScheduledAction.html">ScheduledAction</a> *action = it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); <a name="l02039"></a>02039 <span class="keywordflow">if</span> (action->timerId == timerId) { <a name="l02040"></a>02040 scheduledActions.removeRef(action); <a name="l02041"></a>02041 <span class="keywordflow">if</span> (!action->executing) <a name="l02042"></a>02042 <span class="keyword">delete</span> action; <a name="l02043"></a>02043 <span class="keywordflow">return</span>; <a name="l02044"></a>02044 } <a name="l02045"></a>02045 } <a name="l02046"></a>02046 } <a name="l02047"></a>02047 <a name="l02048"></a><a class="code" href="classKJS_1_1WindowQObject.html#622c9c2ece072c67dc8d62774e13187a">02048</a> <span class="keywordtype">bool</span> <a class="code" href="classKJS_1_1WindowQObject.html#622c9c2ece072c67dc8d62774e13187a">WindowQObject::hasTimers</a>()<span class="keyword"> const</span> <a name="l02049"></a>02049 <span class="keyword"></span>{ <a name="l02050"></a>02050 <span class="keywordflow">return</span> scheduledActions.count(); <a name="l02051"></a>02051 } <a name="l02052"></a>02052 <a name="l02053"></a><a class="code" href="classKJS_1_1WindowQObject.html#4ab57ed8691e6084692c15201b58bcbf">02053</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1WindowQObject.html#4ab57ed8691e6084692c15201b58bcbf">WindowQObject::mark</a>() <a name="l02054"></a>02054 { <a name="l02055"></a>02055 <a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html">QPtrListIterator<ScheduledAction></a> it(scheduledActions); <a name="l02056"></a>02056 <span class="keywordflow">for</span> (; it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); ++it) <a name="l02057"></a>02057 it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>()->mark(); <a name="l02058"></a>02058 } <a name="l02059"></a>02059 <a name="l02060"></a><a class="code" href="classKJS_1_1WindowQObject.html#64a7507f991e2b951348de877b6efdc6">02060</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1WindowQObject.html#64a7507f991e2b951348de877b6efdc6">WindowQObject::timerEvent</a>(<a class="codeRef" doxygen="qt.tag:" href="qtimerevent.html">QTimerEvent</a> *) <a name="l02061"></a>02061 { <a name="l02062"></a>02062 <a class="codeRef" doxygen="qt.tag:" href="qobject.html#killTimers">killTimers</a>(); <a name="l02063"></a>02063 <a name="l02064"></a>02064 <span class="keywordflow">if</span> (scheduledActions.isEmpty()) <a name="l02065"></a>02065 <span class="keywordflow">return</span>; <a name="l02066"></a>02066 <a name="l02067"></a>02067 currentlyDispatching = <span class="keyword">true</span>; <a name="l02068"></a>02068 <a name="l02069"></a>02069 <a name="l02070"></a>02070 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> currentActual = <a class="code" href="classKJS_1_1DateTimeMS.html#beca93d3552e8ff8c8122249213e6189">DateTimeMS::now</a>(); <a name="l02071"></a>02071 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> currentAdjusted = currentActual.<a class="code" href="classKJS_1_1DateTimeMS.html#5f9ce9a03af17e330b14ad6f7a41db15">addMSecs</a>(-pausedTime); <a name="l02072"></a>02072 <a name="l02073"></a>02073 <span class="comment">// Work out which actions are to be executed. We take a separate copy of</span> <a name="l02074"></a>02074 <span class="comment">// this list since the main one may be modified during action execution</span> <a name="l02075"></a>02075 <a class="codeRef" doxygen="qt.tag:" href="qptrlist.html">QPtrList<ScheduledAction></a> toExecute; <a name="l02076"></a>02076 <a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html">QPtrListIterator<ScheduledAction></a> it(scheduledActions); <a name="l02077"></a>02077 <span class="keywordflow">for</span> (; it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); ++it) <a name="l02078"></a>02078 <span class="keywordflow">if</span> (currentAdjusted >= it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>()->nextTime) <a name="l02079"></a>02079 toExecute.<a class="codeRef" doxygen="qt.tag:" href="qptrlist.html#append">append</a>(it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>()); <a name="l02080"></a>02080 <a name="l02081"></a>02081 <span class="comment">// ### verify that the window can't be closed (and action deleted) during execution</span> <a name="l02082"></a>02082 it = <a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html">QPtrListIterator<ScheduledAction></a>(toExecute); <a name="l02083"></a>02083 <span class="keywordflow">for</span> (; it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); ++it) { <a name="l02084"></a>02084 <a class="code" href="classKJS_1_1ScheduledAction.html">ScheduledAction</a> *action = it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); <a name="l02085"></a>02085 <span class="keywordflow">if</span> (!scheduledActions.containsRef(action)) <span class="comment">// removed by clearTimeout()</span> <a name="l02086"></a>02086 <span class="keywordflow">continue</span>; <a name="l02087"></a>02087 <a name="l02088"></a>02088 action->executing = <span class="keyword">true</span>; <span class="comment">// prevent deletion in clearTimeout()</span> <a name="l02089"></a>02089 <a name="l02090"></a>02090 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="qt.tag:" href="qobject.html#parent">parent</a>->part()) { <a name="l02091"></a>02091 <span class="keywordtype">bool</span> ok = action->execute(<a class="codeRef" doxygen="qt.tag:" href="qobject.html#parent">parent</a>); <a name="l02092"></a>02092 <span class="keywordflow">if</span> ( !ok ) <span class="comment">// e.g. JS disabled</span> <a name="l02093"></a>02093 scheduledActions.removeRef( action ); <a name="l02094"></a>02094 } <a name="l02095"></a>02095 <a name="l02096"></a>02096 <span class="keywordflow">if</span> (action->singleShot) { <a name="l02097"></a>02097 scheduledActions.removeRef(action); <a name="l02098"></a>02098 } <a name="l02099"></a>02099 <a name="l02100"></a>02100 action->executing = <span class="keyword">false</span>; <a name="l02101"></a>02101 <a name="l02102"></a>02102 <span class="keywordflow">if</span> (!scheduledActions.containsRef(action)) <a name="l02103"></a>02103 <span class="keyword">delete</span> action; <a name="l02104"></a>02104 <span class="keywordflow">else</span> <a name="l02105"></a>02105 action->nextTime = action->nextTime.addMSecs(action->interval); <a name="l02106"></a>02106 } <a name="l02107"></a>02107 <a name="l02108"></a>02108 pausedTime += currentActual.<a class="code" href="classKJS_1_1DateTimeMS.html#702ac12e36f27b4d1785d07b6762bafb">msecsTo</a>(<a class="code" href="classKJS_1_1DateTimeMS.html#beca93d3552e8ff8c8122249213e6189">DateTimeMS::now</a>()); <a name="l02109"></a>02109 <a name="l02110"></a>02110 currentlyDispatching = <span class="keyword">false</span>; <a name="l02111"></a>02111 <a name="l02112"></a>02112 <span class="comment">// Work out when next event is to occur</span> <a name="l02113"></a>02113 <a class="code" href="classKJS_1_1WindowQObject.html#fce03932be633e3f45b74eff80c3e2b2">setNextTimer</a>(); <a name="l02114"></a>02114 } <a name="l02115"></a>02115 <a name="l02116"></a><a class="code" href="classKJS_1_1DateTimeMS.html#5f9ce9a03af17e330b14ad6f7a41db15">02116</a> <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> <a class="code" href="classKJS_1_1DateTimeMS.html#5f9ce9a03af17e330b14ad6f7a41db15">DateTimeMS::addMSecs</a>(<span class="keywordtype">int</span> s)<span class="keyword"> const</span> <a name="l02117"></a>02117 <span class="keyword"></span>{ <a name="l02118"></a>02118 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> c = *<span class="keyword">this</span>; <a name="l02119"></a>02119 c.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a> = mTime.<a class="codeRef" doxygen="qt.tag:" href="qtime.html#addMSecs">addMSecs</a>(s); <a name="l02120"></a>02120 <span class="keywordflow">if</span> (s > 0) <a name="l02121"></a>02121 { <a name="l02122"></a>02122 <span class="keywordflow">if</span> (c.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a> < mTime) <a name="l02123"></a>02123 c.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a> = mDate.<a class="codeRef" doxygen="qt.tag:" href="qdate.html#addDays">addDays</a>(1); <a name="l02124"></a>02124 } <a name="l02125"></a>02125 <span class="keywordflow">else</span> <a name="l02126"></a>02126 { <a name="l02127"></a>02127 <span class="keywordflow">if</span> (c.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a> > mTime) <a name="l02128"></a>02128 c.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a> = mDate.<a class="codeRef" doxygen="qt.tag:" href="qdate.html#addDays">addDays</a>(-1); <a name="l02129"></a>02129 } <a name="l02130"></a>02130 <span class="keywordflow">return</span> c; <a name="l02131"></a>02131 } <a name="l02132"></a>02132 <a name="l02133"></a><a class="code" href="classKJS_1_1DateTimeMS.html#5d28820f30db076f4aabee2314aabfec">02133</a> <span class="keywordtype">bool</span> <a class="code" href="classKJS_1_1DateTimeMS.html#5d28820f30db076f4aabee2314aabfec">DateTimeMS::operator ></a>(<span class="keyword">const</span> <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> &other)<span class="keyword"> const</span> <a name="l02134"></a>02134 <span class="keyword"></span>{ <a name="l02135"></a>02135 <span class="keywordflow">if</span> (mDate > other.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a>) <a name="l02136"></a>02136 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l02137"></a>02137 <a name="l02138"></a>02138 <span class="keywordflow">if</span> (mDate < other.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a>) <a name="l02139"></a>02139 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l02140"></a>02140 <a name="l02141"></a>02141 <span class="keywordflow">return</span> mTime > other.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a>; <a name="l02142"></a>02142 } <a name="l02143"></a>02143 <a name="l02144"></a><a class="code" href="classKJS_1_1DateTimeMS.html#435d968002405c8042cc188e30429ea2">02144</a> <span class="keywordtype">bool</span> <a class="code" href="classKJS_1_1DateTimeMS.html#435d968002405c8042cc188e30429ea2">DateTimeMS::operator >=</a>(<span class="keyword">const</span> <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> &other)<span class="keyword"> const</span> <a name="l02145"></a>02145 <span class="keyword"></span>{ <a name="l02146"></a>02146 <span class="keywordflow">if</span> (mDate > other.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a>) <a name="l02147"></a>02147 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l02148"></a>02148 <a name="l02149"></a>02149 <span class="keywordflow">if</span> (mDate < other.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a>) <a name="l02150"></a>02150 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l02151"></a>02151 <a name="l02152"></a>02152 <span class="keywordflow">return</span> mTime >= other.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a>; <a name="l02153"></a>02153 } <a name="l02154"></a>02154 <a name="l02155"></a><a class="code" href="classKJS_1_1DateTimeMS.html#702ac12e36f27b4d1785d07b6762bafb">02155</a> <span class="keywordtype">int</span> <a class="code" href="classKJS_1_1DateTimeMS.html#702ac12e36f27b4d1785d07b6762bafb">DateTimeMS::msecsTo</a>(<span class="keyword">const</span> <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> &other)<span class="keyword"> const</span> <a name="l02156"></a>02156 <span class="keyword"></span>{ <a name="l02157"></a>02157 <span class="keywordtype">int</span> d = mDate.<a class="codeRef" doxygen="qt.tag:" href="qdate.html#daysTo">daysTo</a>(other.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a>); <a name="l02158"></a>02158 <span class="keywordtype">int</span> ms = mTime.<a class="codeRef" doxygen="qt.tag:" href="qtime.html#msecsTo">msecsTo</a>(other.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a>); <a name="l02159"></a>02159 <span class="keywordflow">return</span> d*24*60*60*1000 + ms; <a name="l02160"></a>02160 } <a name="l02161"></a>02161 <a name="l02162"></a>02162 <a name="l02163"></a><a class="code" href="classKJS_1_1DateTimeMS.html#beca93d3552e8ff8c8122249213e6189">02163</a> <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> <a class="code" href="classKJS_1_1DateTimeMS.html#beca93d3552e8ff8c8122249213e6189">DateTimeMS::now</a>() <a name="l02164"></a>02164 { <a name="l02165"></a>02165 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> t; <a name="l02166"></a>02166 <a class="codeRef" doxygen="qt.tag:" href="qtime.html">QTime</a> before = <a class="codeRef" doxygen="qt.tag:" href="qtime.html#currentTime-2">QTime::currentTime</a>(); <a name="l02167"></a>02167 t.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a> = <a class="codeRef" doxygen="qt.tag:" href="qdate.html#currentDate-2">QDate::currentDate</a>(); <a name="l02168"></a>02168 t.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a> = <a class="codeRef" doxygen="qt.tag:" href="qtime.html#currentTime-2">QTime::currentTime</a>(); <a name="l02169"></a>02169 <span class="keywordflow">if</span> (t.<a class="code" href="classKJS_1_1DateTimeMS.html#e52493be33ff970c2a5934fda86ef3a4">mTime</a> < before) <a name="l02170"></a>02170 t.<a class="code" href="classKJS_1_1DateTimeMS.html#26dac89701378c563ff3ac23f2e10cff">mDate</a> = <a class="codeRef" doxygen="qt.tag:" href="qdate.html#currentDate-2">QDate::currentDate</a>(); <span class="comment">// prevent race condition in hacky way :)</span> <a name="l02171"></a>02171 <span class="keywordflow">return</span> t; <a name="l02172"></a>02172 } <a name="l02173"></a>02173 <a name="l02174"></a><a class="code" href="classKJS_1_1WindowQObject.html#fce03932be633e3f45b74eff80c3e2b2">02174</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1WindowQObject.html#fce03932be633e3f45b74eff80c3e2b2">WindowQObject::setNextTimer</a>() <a name="l02175"></a>02175 { <a name="l02176"></a>02176 <span class="keywordflow">if</span> (currentlyDispatching) <a name="l02177"></a>02177 <span class="keywordflow">return</span>; <span class="comment">// Will schedule at the end </span> <a name="l02178"></a>02178 <a name="l02179"></a>02179 <span class="keywordflow">if</span> (scheduledActions.isEmpty()) <a name="l02180"></a>02180 <span class="keywordflow">return</span>; <a name="l02181"></a>02181 <a name="l02182"></a>02182 <a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html">QPtrListIterator<ScheduledAction></a> it(scheduledActions); <a name="l02183"></a>02183 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> nextTime = it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>()->nextTime; <a name="l02184"></a>02184 <span class="keywordflow">for</span> (++it; it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>(); ++it) <a name="l02185"></a>02185 <span class="keywordflow">if</span> (nextTime > it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>()->nextTime) <a name="l02186"></a>02186 nextTime = it.<a class="codeRef" doxygen="qt.tag:" href="qptrlistiterator.html#current">current</a>()->nextTime; <a name="l02187"></a>02187 <a name="l02188"></a>02188 <a class="code" href="classKJS_1_1DateTimeMS.html">DateTimeMS</a> nextTimeActual = nextTime.<a class="code" href="classKJS_1_1DateTimeMS.html#5f9ce9a03af17e330b14ad6f7a41db15">addMSecs</a>(pausedTime); <a name="l02189"></a>02189 <span class="keywordtype">int</span> nextInterval = <a class="code" href="classKJS_1_1DateTimeMS.html#beca93d3552e8ff8c8122249213e6189">DateTimeMS::now</a>().<a class="code" href="classKJS_1_1DateTimeMS.html#702ac12e36f27b4d1785d07b6762bafb">msecsTo</a>(nextTimeActual); <a name="l02190"></a>02190 <span class="keywordflow">if</span> (nextInterval < 0) <a name="l02191"></a>02191 nextInterval = 0; <a name="l02192"></a>02192 <a class="codeRef" doxygen="qt.tag:" href="qobject.html#startTimer">startTimer</a>(nextInterval); <a name="l02193"></a>02193 } <a name="l02194"></a>02194 <a name="l02195"></a><a class="code" href="classKJS_1_1WindowQObject.html#f642e5b86917ffb4391c9db3c861426d">02195</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1WindowQObject.html#f642e5b86917ffb4391c9db3c861426d">WindowQObject::timeoutClose</a>() <a name="l02196"></a>02196 { <a name="l02197"></a>02197 <a class="codeRef" doxygen="qt.tag:" href="qobject.html#parent">parent</a>->closeNow(); <a name="l02198"></a>02198 } <a name="l02199"></a>02199 <a name="l02200"></a>02200 Value FrameArray::get(ExecState *exec, <span class="keyword">const</span> Identifier &p)<span class="keyword"> const</span> <a name="l02201"></a>02201 <span class="keyword"></span>{ <a name="l02202"></a>02202 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l02203"></a>02203 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"FrameArray::get "</span> << p.qstring() << <span class="stringliteral">" part="</span> << (<span class="keywordtype">void</span>*)part << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l02204"></a>02204 <span class="preprocessor">#endif</span> <a name="l02205"></a>02205 <span class="preprocessor"></span> <span class="keywordflow">if</span> (part.isNull()) <a name="l02206"></a>02206 <span class="keywordflow">return</span> Undefined(); <a name="l02207"></a>02207 <a name="l02208"></a>02208 <a class="codeRef" doxygen="qt.tag:" href="qptrlist.html">QPtrList<KParts::ReadOnlyPart></a> frames = part->frames(); <a name="l02209"></a>02209 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> len = frames.<a class="codeRef" doxygen="qt.tag:" href="qptrlist.html#count">count</a>(); <a name="l02210"></a>02210 <span class="keywordflow">if</span> (p == lengthPropertyName) <a name="l02211"></a>02211 <span class="keywordflow">return</span> Number(len); <a name="l02212"></a>02212 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (p== <span class="stringliteral">"location"</span>) <span class="comment">// non-standard property, but works in NS and IE</span> <a name="l02213"></a>02213 { <a name="l02214"></a>02214 Object obj = Object::dynamicCast( <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>( part ) ); <a name="l02215"></a>02215 <span class="keywordflow">if</span> ( obj.isValid() ) <a name="l02216"></a>02216 <span class="keywordflow">return</span> obj.get( exec, <span class="stringliteral">"location"</span> ); <a name="l02217"></a>02217 <span class="keywordflow">return</span> Undefined(); <a name="l02218"></a>02218 } <a name="l02219"></a>02219 <a name="l02220"></a>02220 <span class="comment">// check for the name or number</span> <a name="l02221"></a>02221 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *frame = part->findFramePart(p.qstring()); <a name="l02222"></a>02222 <span class="keywordflow">if</span> (!frame) { <a name="l02223"></a>02223 <span class="keywordtype">bool</span> ok; <a name="l02224"></a>02224 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i = p.toArrayIndex(&ok); <a name="l02225"></a>02225 <span class="keywordflow">if</span> (ok && i < len) <a name="l02226"></a>02226 frame = frames.<a class="codeRef" doxygen="qt.tag:" href="qptrlist.html#at">at</a>(i); <a name="l02227"></a>02227 } <a name="l02228"></a>02228 <a name="l02229"></a>02229 <span class="comment">// we are potentially fetching a reference to a another Window object here.</span> <a name="l02230"></a>02230 <span class="comment">// i.e. we may be accessing objects from another interpreter instance.</span> <a name="l02231"></a>02231 <span class="comment">// Therefore we have to be a bit careful with memory management.</span> <a name="l02232"></a>02232 <span class="keywordflow">if</span> (frame) { <a name="l02233"></a>02233 <span class="keywordflow">return</span> <a class="code" href="classKJS_1_1Window.html#eb911cd95edcfc71a4b2882d4210d33b">Window::retrieve</a>(frame); <a name="l02234"></a>02234 } <a name="l02235"></a>02235 <a name="l02236"></a>02236 <span class="comment">// Fun IE quirk: name lookup in there is actually done by document.all </span> <a name="l02237"></a>02237 <span class="comment">// hence, it can find non-frame things (and even let them hide frame ones!)</span> <a name="l02238"></a>02238 <span class="comment">// We don't quite do that, but do this as a fallback.</span> <a name="l02239"></a>02239 DOM::DocumentImpl* doc = static_cast<DOM::DocumentImpl*>(part->document().handle()); <a name="l02240"></a>02240 <span class="keywordflow">if</span> (doc) { <a name="l02241"></a>02241 DOM::HTMLCollectionImpl docuAll(doc, DOM::HTMLCollectionImpl::DOC_ALL); <a name="l02242"></a>02242 DOM::NodeImpl* node = docuAll.namedItem(p.string()); <a name="l02243"></a>02243 <span class="keywordflow">if</span> (node) { <a name="l02244"></a>02244 <span class="keywordflow">if</span> (node->id() == ID_FRAME || node->id() == ID_IFRAME) { <a name="l02245"></a>02245 <span class="comment">//Return the Window object.</span> <a name="l02246"></a>02246 <a class="code" href="classKHTMLPart.html">KHTMLPart</a>* part = static_cast<DOM::HTMLFrameElementImpl*>(node)->contentPart(); <a name="l02247"></a>02247 <span class="keywordflow">if</span> (part) <a name="l02248"></a>02248 <span class="keywordflow">return</span> Value(<a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(part)); <a name="l02249"></a>02249 <span class="keywordflow">else</span> <a name="l02250"></a>02250 <span class="keywordflow">return</span> Undefined(); <a name="l02251"></a>02251 } <span class="keywordflow">else</span> { <a name="l02252"></a>02252 <span class="comment">//Just a regular node..</span> <a name="l02253"></a>02253 <span class="keywordflow">return</span> <a class="code" href="namespaceKJS.html#54231f4fbfeb35ec709c9a16c8677691">getDOMNode</a>(exec, node); <a name="l02254"></a>02254 } <a name="l02255"></a>02255 } <a name="l02256"></a>02256 } <span class="keywordflow">else</span> { <a name="l02257"></a>02257 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg9acd682001598171edf8ecb104fdad2b">kdWarning</a>(6070) << <span class="stringliteral">"Missing own document in FrameArray::get()"</span> << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l02258"></a>02258 } <a name="l02259"></a>02259 <a name="l02260"></a>02260 <span class="keywordflow">return</span> ObjectImp::get(exec, p); <a name="l02261"></a>02261 } <a name="l02262"></a>02262 <a name="l02263"></a>02263 Value FrameArray::call(ExecState *exec, Object &<span class="comment">/*thisObj*/</span>, <span class="keyword">const</span> List &args) <a name="l02264"></a>02264 { <a name="l02265"></a>02265 <span class="comment">//IE supports a subset of the get functionality as call...</span> <a name="l02266"></a>02266 <span class="comment">//... basically, when the return is a window, it supports that, otherwise it </span> <a name="l02267"></a>02267 <span class="comment">//errors out. We do a cheap-and-easy emulation of that, and just do the same</span> <a name="l02268"></a>02268 <span class="comment">//thing as get does.</span> <a name="l02269"></a>02269 <span class="keywordflow">if</span> (args.size() == 1) <a name="l02270"></a>02270 <span class="keywordflow">return</span> get(exec, Identifier(args[0].toString(exec))); <a name="l02271"></a>02271 <a name="l02272"></a>02272 <span class="keywordflow">return</span> Undefined(); <a name="l02273"></a>02273 } <a name="l02274"></a>02274 <a name="l02275"></a>02275 <a name="l02277"></a>02277 <a name="l02278"></a>02278 <span class="keyword">const</span> ClassInfo <a class="code" href="classKJS_1_1Location.html#4e84d73f11e08b40379da328697a5530">Location::info</a> = { <span class="stringliteral">"Location"</span>, 0, &<a class="code" href="namespaceKJS.html#533539801d11c0b7c47984e6c2717e4a">LocationTable</a>, 0 }; <a name="l02279"></a>02279 <span class="comment">/*</span> <a name="l02280"></a>02280 <span class="comment">@begin LocationTable 11</span> <a name="l02281"></a>02281 <span class="comment"> hash Location::Hash DontDelete</span> <a name="l02282"></a>02282 <span class="comment"> host Location::Host DontDelete</span> <a name="l02283"></a>02283 <span class="comment"> hostname Location::Hostname DontDelete</span> <a name="l02284"></a>02284 <span class="comment"> href Location::Href DontDelete</span> <a name="l02285"></a>02285 <span class="comment"> pathname Location::Pathname DontDelete</span> <a name="l02286"></a>02286 <span class="comment"> port Location::Port DontDelete</span> <a name="l02287"></a>02287 <span class="comment"> protocol Location::Protocol DontDelete</span> <a name="l02288"></a>02288 <span class="comment"> search Location::Search DontDelete</span> <a name="l02289"></a>02289 <span class="comment"> [[==]] Location::EqualEqual DontDelete|ReadOnly</span> <a name="l02290"></a>02290 <span class="comment"> assign Location::Assign DontDelete|Function 1</span> <a name="l02291"></a>02291 <span class="comment"> toString Location::ToString DontDelete|Function 0</span> <a name="l02292"></a>02292 <span class="comment"> replace Location::Replace DontDelete|Function 1</span> <a name="l02293"></a>02293 <span class="comment"> reload Location::Reload DontDelete|Function 0</span> <a name="l02294"></a>02294 <span class="comment">@end</span> <a name="l02295"></a>02295 <span class="comment">*/</span> <a name="l02296"></a>02296 IMPLEMENT_PROTOFUNC_DOM(LocationFunc) <a name="l02297"></a>02297 <a class="code" href="classKJS_1_1Location.html">Location</a>::<a class="code" href="classKJS_1_1Location.html">Location</a>(khtml::ChildFrame *f) : m_frame(f) <a name="l02298"></a>02298 { <a name="l02299"></a>02299 <span class="comment">//kdDebug(6070) << "Location::Location " << this << " m_part=" << (void*)m_part << endl;</span> <a name="l02300"></a>02300 } <a name="l02301"></a>02301 <a name="l02302"></a><a class="code" href="classKJS_1_1Location.html#f5be2c6550bbd96137cbb3144ec3c529">02302</a> <a class="code" href="classKJS_1_1Location.html#f5be2c6550bbd96137cbb3144ec3c529">Location::~Location</a>() <a name="l02303"></a>02303 { <a name="l02304"></a>02304 <span class="comment">//kdDebug(6070) << "Location::~Location " << this << " m_part=" << (void*)m_part << endl;</span> <a name="l02305"></a>02305 } <a name="l02306"></a>02306 <a name="l02307"></a><a class="code" href="classKJS_1_1Location.html#d92a695b1590356d6bfc819c6202c18c">02307</a> <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *<a class="code" href="classKJS_1_1Location.html#d92a695b1590356d6bfc819c6202c18c">Location::part</a>()<span class="keyword"> const </span>{ <a name="l02308"></a>02308 <span class="keywordflow">return</span> m_frame ? static_cast<KParts::ReadOnlyPart *>(m_frame->m_part) : 0L; <a name="l02309"></a>02309 } <a name="l02310"></a>02310 <a name="l02311"></a><a class="code" href="classKJS_1_1Location.html#b4af1cab52a3ec40a3b0a5ca524bee21">02311</a> Value <a class="code" href="classKJS_1_1Location.html#b4af1cab52a3ec40a3b0a5ca524bee21">Location::get</a>(ExecState *exec, <span class="keyword">const</span> Identifier &p)<span class="keyword"> const</span> <a name="l02312"></a>02312 <span class="keyword"></span>{ <a name="l02313"></a>02313 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l02314"></a>02314 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Location::get "</span> << p.qstring() << <span class="stringliteral">" m_part="</span> << (<span class="keywordtype">void</span>*)m_frame->m_part << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l02315"></a>02315 #endif <a name="l02316"></a>02316 <a name="l02317"></a>02317 if (m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() || m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) <a name="l02318"></a>02318 <span class="keywordflow">return</span> Undefined(); <a name="l02319"></a>02319 <a name="l02320"></a>02320 <span class="keyword">const</span> HashEntry *entry = Lookup::findEntry(&<a class="code" href="namespaceKJS.html#533539801d11c0b7c47984e6c2717e4a">LocationTable</a>, p); <a name="l02321"></a>02321 <a name="l02322"></a>02322 <span class="comment">// properties that work on all Location objects</span> <a name="l02323"></a>02323 <span class="keywordflow">if</span> ( entry && entry->value == Replace ) <a name="l02324"></a>02324 <span class="keywordflow">return</span> lookupOrCreateFunction<LocationFunc>(exec,p,<span class="keyword">this</span>,entry->value,entry->params,entry->attr); <a name="l02325"></a>02325 <a name="l02326"></a>02326 <span class="comment">// XSS check</span> <a name="l02327"></a>02327 <span class="keyword">const</span> <a class="code" href="classKJS_1_1Window.html">Window</a>* window = <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>( m_frame->m_part ); <a name="l02328"></a>02328 <span class="keywordflow">if</span> ( !window || !window->isSafeScript(exec) ) <a name="l02329"></a>02329 <span class="keywordflow">return</span> Undefined(); <a name="l02330"></a>02330 <a name="l02331"></a>02331 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html">KURL</a> url = m_frame->m_part->url(); <a name="l02332"></a>02332 <span class="keywordflow">if</span> (entry) <a name="l02333"></a>02333 <span class="keywordflow">switch</span> (entry->value) { <a name="l02334"></a>02334 <span class="keywordflow">case</span> Hash: <a name="l02335"></a>02335 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#53f4194e147b11b678760340d62b3043">ref</a>().<a class="codeRef" doxygen="qt.tag:" href="qstring.html#isNull">isNull</a>() ? <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>(<span class="stringliteral">""</span>) : <span class="stringliteral">"#"</span> + url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#53f4194e147b11b678760340d62b3043">ref</a>() ); <a name="l02336"></a>02336 <span class="keywordflow">case</span> Host: { <a name="l02337"></a>02337 UString str = url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#df3ad35581a0ca25ecc16e073f8275ca">host</a>(); <a name="l02338"></a>02338 <span class="keywordflow">if</span> (url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#205598afc6842db13e4ad996ba1d9422">port</a>()) <a name="l02339"></a>02339 str += <span class="stringliteral">":"</span> + <a class="codeRef" doxygen="qt.tag:" href="qstring.html#number">QString::number</a>((<span class="keywordtype">int</span>)url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#205598afc6842db13e4ad996ba1d9422">port</a>()); <a name="l02340"></a>02340 <span class="keywordflow">return</span> String(str); <a name="l02341"></a>02341 <span class="comment">// Note: this is the IE spec. The NS spec swaps the two, it says</span> <a name="l02342"></a>02342 <span class="comment">// "The hostname property is the concatenation of the host and port properties, separated by a colon."</span> <a name="l02343"></a>02343 <span class="comment">// Bleh.</span> <a name="l02344"></a>02344 } <a name="l02345"></a>02345 <span class="keywordflow">case</span> Hostname: <a name="l02346"></a>02346 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#df3ad35581a0ca25ecc16e073f8275ca">host</a>() ); <a name="l02347"></a>02347 <span class="keywordflow">case</span> Href: <a name="l02348"></a>02348 <span class="keywordflow">if</span> (!url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#d24bdff9a1df6735fe544c96cd7c30c1">hasPath</a>()) <a name="l02349"></a>02349 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#9382bc0e035124e884f755cff962530f">prettyURL</a>()+<span class="stringliteral">"/"</span> ); <a name="l02350"></a>02350 <span class="keywordflow">else</span> <a name="l02351"></a>02351 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#9382bc0e035124e884f755cff962530f">prettyURL</a>() ); <a name="l02352"></a>02352 <span class="keywordflow">case</span> Pathname: <a name="l02353"></a>02353 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#dd464ac157c5ee326847ddaef7ae2d19">path</a>().<a class="codeRef" doxygen="qt.tag:" href="qstring.html#isEmpty">isEmpty</a>() ? <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a>(<span class="stringliteral">"/"</span>) : url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#dd464ac157c5ee326847ddaef7ae2d19">path</a>() ); <a name="l02354"></a>02354 <span class="keywordflow">case</span> Port: <a name="l02355"></a>02355 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#205598afc6842db13e4ad996ba1d9422">port</a>() ? <a class="codeRef" doxygen="qt.tag:" href="qstring.html#number">QString::number</a>((<span class="keywordtype">int</span>)url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#205598afc6842db13e4ad996ba1d9422">port</a>()) : <a class="codeRef" doxygen="qt.tag:" href="qstring.html#fromLatin1">QString::fromLatin1</a>(<span class="stringliteral">""</span>) ); <a name="l02356"></a>02356 <span class="keywordflow">case</span> Protocol: <a name="l02357"></a>02357 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#4be1d1602a1d0f0afeee230167ebfdc4">protocol</a>()+<span class="stringliteral">":"</span> ); <a name="l02358"></a>02358 <span class="keywordflow">case</span> Search: <a name="l02359"></a>02359 <span class="keywordflow">return</span> String( url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#0a28c0873806d04a7fd4e19feeb4bd63">query</a>() ); <a name="l02360"></a>02360 <span class="keywordflow">case</span> EqualEqual: <span class="comment">// [[==]]</span> <a name="l02361"></a>02361 <span class="keywordflow">return</span> String(<a class="code" href="classKJS_1_1Location.html#1cc10cbf96843133abf325471dbde4ff">toString</a>(exec)); <a name="l02362"></a>02362 <span class="keywordflow">case</span> ToString: <a name="l02363"></a>02363 <span class="keywordflow">return</span> lookupOrCreateFunction<LocationFunc>(exec,p,<span class="keyword">this</span>,entry->value,entry->params,entry->attr); <a name="l02364"></a>02364 } <a name="l02365"></a>02365 <span class="comment">// Look for overrides</span> <a name="l02366"></a>02366 ValueImp * val = ObjectImp::getDirect(p); <a name="l02367"></a>02367 <span class="keywordflow">if</span> (val) <a name="l02368"></a>02368 <span class="keywordflow">return</span> Value(val); <a name="l02369"></a>02369 <span class="keywordflow">if</span> (entry && (entry->attr & Function)) <a name="l02370"></a>02370 <span class="keywordflow">return</span> lookupOrCreateFunction<LocationFunc>(exec,p,<span class="keyword">this</span>,entry->value,entry->params,entry->attr); <a name="l02371"></a>02371 <a name="l02372"></a>02372 <span class="keywordflow">return</span> Undefined(); <a name="l02373"></a>02373 } <a name="l02374"></a>02374 <a name="l02375"></a><a class="code" href="classKJS_1_1Location.html#ab459b776c2b41ef4bae1d5d3467af53">02375</a> <span class="keywordtype">void</span> <a class="code" href="classKJS_1_1Location.html#ab459b776c2b41ef4bae1d5d3467af53">Location::put</a>(ExecState *exec, <span class="keyword">const</span> Identifier &p, <span class="keyword">const</span> Value &v, <span class="keywordtype">int</span> attr) <a name="l02376"></a>02376 { <a name="l02377"></a>02377 <span class="preprocessor">#ifdef KJS_VERBOSE</span> <a name="l02378"></a>02378 <span class="preprocessor"></span> <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"Location::put "</span> << p.qstring() << <span class="stringliteral">" m_part="</span> << (<span class="keywordtype">void</span>*)m_frame->m_part << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l02379"></a>02379 #endif <a name="l02380"></a>02380 if (m_frame.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>() || m_frame->m_part.<a class="codeRef" doxygen="qt.tag:" href="qguardedptr.html#isNull">isNull</a>()) <a name="l02381"></a>02381 <span class="keywordflow">return</span>; <a name="l02382"></a>02382 <a name="l02383"></a>02383 <span class="keyword">const</span> <a class="code" href="classKJS_1_1Window.html">Window</a>* window = <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>( m_frame->m_part ); <a name="l02384"></a>02384 <span class="keywordflow">if</span> ( !window ) <a name="l02385"></a>02385 <span class="keywordflow">return</span>; <a name="l02386"></a>02386 <a name="l02387"></a>02387 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html">KURL</a> url = m_frame->m_part->url(); <a name="l02388"></a>02388 <a name="l02389"></a>02389 <span class="keyword">const</span> HashEntry *entry = Lookup::findEntry(&<a class="code" href="namespaceKJS.html#533539801d11c0b7c47984e6c2717e4a">LocationTable</a>, p); <a name="l02390"></a>02390 <a name="l02391"></a>02391 <span class="keywordflow">if</span> (entry) { <a name="l02392"></a>02392 <a name="l02393"></a>02393 <span class="comment">// XSS check. Only new hrefs can be set from other sites</span> <a name="l02394"></a>02394 <span class="keywordflow">if</span> (entry->value != Href && !window-><a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec)) <a name="l02395"></a>02395 <span class="keywordflow">return</span>; <a name="l02396"></a>02396 <a name="l02397"></a>02397 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> str = v.toString(exec).qstring(); <a name="l02398"></a>02398 <span class="keywordflow">switch</span> (entry->value) { <a name="l02399"></a>02399 <span class="keywordflow">case</span> Href: { <a name="l02400"></a>02400 <a class="code" href="classKHTMLPart.html">KHTMLPart</a>* p =::qt_cast<KHTMLPart*>(<a class="code" href="classKJS_1_1Window.html#7bc822a098cb3d57e0a754c6a8d0c741">Window::retrieveActive</a>(exec)-><a class="code" href="classKJS_1_1Window.html#8229edb51e418350909a0a6d9999181a">part</a>()); <a name="l02401"></a>02401 <span class="keywordflow">if</span> ( p ) <a name="l02402"></a>02402 url = p-><a class="code" href="classKHTMLPart.html#56f0f72f58376e7308af0c392dd937a3">htmlDocument</a>().<a class="code" href="classDOM_1_1HTMLDocument.html#f599c5eb7db7d3ad96f8ce28b8d32c52">completeURL</a>( str ).string(); <a name="l02403"></a>02403 <span class="keywordflow">else</span> <a name="l02404"></a>02404 url = str; <a name="l02405"></a>02405 <span class="keywordflow">break</span>; <a name="l02406"></a>02406 } <a name="l02407"></a>02407 <span class="keywordflow">case</span> Hash: <a name="l02408"></a>02408 <span class="comment">// when the hash is already the same ignore it</span> <a name="l02409"></a>02409 <span class="keywordflow">if</span> (str == url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#53f4194e147b11b678760340d62b3043">ref</a>()) <span class="keywordflow">return</span>; <a name="l02410"></a>02410 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#f531d16bdf3ac9a5a8ed27e16f61ebd7">setRef</a>(str); <a name="l02411"></a>02411 <span class="keywordflow">break</span>; <a name="l02412"></a>02412 <span class="keywordflow">case</span> Host: { <a name="l02413"></a>02413 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> host = str.left(str.find(<span class="stringliteral">":"</span>)); <a name="l02414"></a>02414 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> port = str.mid(str.find(<span class="stringliteral">":"</span>)+1); <a name="l02415"></a>02415 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#fbf05cea61e7c6f3c5de6a467d5f0534">setHost</a>(host); <a name="l02416"></a>02416 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#872ff8bd98d746e3356d9331d55421e8">setPort</a>(port.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#toUInt">toUInt</a>()); <a name="l02417"></a>02417 <span class="keywordflow">break</span>; <a name="l02418"></a>02418 } <a name="l02419"></a>02419 <span class="keywordflow">case</span> Hostname: <a name="l02420"></a>02420 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#fbf05cea61e7c6f3c5de6a467d5f0534">setHost</a>(str); <a name="l02421"></a>02421 <span class="keywordflow">break</span>; <a name="l02422"></a>02422 <span class="keywordflow">case</span> Pathname: <a name="l02423"></a>02423 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#6c0a0828b4b9f1126b13380076e2b2f3">setPath</a>(str); <a name="l02424"></a>02424 <span class="keywordflow">break</span>; <a name="l02425"></a>02425 <span class="keywordflow">case</span> Port: <a name="l02426"></a>02426 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#872ff8bd98d746e3356d9331d55421e8">setPort</a>(str.toUInt()); <a name="l02427"></a>02427 <span class="keywordflow">break</span>; <a name="l02428"></a>02428 <span class="keywordflow">case</span> Protocol: <a name="l02429"></a>02429 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#8992baac621d32c2aed7c97a26362b8d">setProtocol</a>(str); <a name="l02430"></a>02430 <span class="keywordflow">break</span>; <a name="l02431"></a>02431 <span class="keywordflow">case</span> Search: <a name="l02432"></a>02432 url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#9ffeaee79924b4156f5816fc95f874e5">setQuery</a>(str); <a name="l02433"></a>02433 <span class="keywordflow">break</span>; <a name="l02434"></a>02434 } <a name="l02435"></a>02435 } <span class="keywordflow">else</span> { <a name="l02436"></a>02436 ObjectImp::put(exec, p, v, attr); <a name="l02437"></a>02437 <span class="keywordflow">return</span>; <a name="l02438"></a>02438 } <a name="l02439"></a>02439 <a name="l02440"></a>02440 <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(m_frame->m_part)-><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, url.<a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/classKURL.html#af8593b924647a9db73016fbeab1812a">url</a>(), <span class="keyword">false</span> <span class="comment">/* don't lock history*/</span> ); <a name="l02441"></a>02441 } <a name="l02442"></a>02442 <a name="l02443"></a><a class="code" href="classKJS_1_1Location.html#34cf61c6fcfcb1afbae8f1a86e6e7408">02443</a> Value <a class="code" href="classKJS_1_1Location.html#34cf61c6fcfcb1afbae8f1a86e6e7408">Location::toPrimitive</a>(ExecState *exec, Type)<span class="keyword"> const</span> <a name="l02444"></a>02444 <span class="keyword"></span>{ <a name="l02445"></a>02445 <span class="keywordflow">if</span> (m_frame) { <a name="l02446"></a>02446 <a class="code" href="classKJS_1_1Window.html">Window</a>* window = <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>( m_frame->m_part ); <a name="l02447"></a>02447 <span class="keywordflow">if</span> ( window && window-><a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) ) <a name="l02448"></a>02448 <span class="keywordflow">return</span> String(<a class="code" href="classKJS_1_1Location.html#1cc10cbf96843133abf325471dbde4ff">toString</a>(exec)); <a name="l02449"></a>02449 } <a name="l02450"></a>02450 <span class="keywordflow">return</span> Undefined(); <a name="l02451"></a>02451 } <a name="l02452"></a>02452 <a name="l02453"></a><a class="code" href="classKJS_1_1Location.html#1cc10cbf96843133abf325471dbde4ff">02453</a> UString <a class="code" href="classKJS_1_1Location.html#1cc10cbf96843133abf325471dbde4ff">Location::toString</a>(ExecState *exec)<span class="keyword"> const</span> <a name="l02454"></a>02454 <span class="keyword"></span>{ <a name="l02455"></a>02455 <span class="keywordflow">if</span> (m_frame) { <a name="l02456"></a>02456 <a class="code" href="classKJS_1_1Window.html">Window</a>* window = <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>( m_frame->m_part ); <a name="l02457"></a>02457 <span class="keywordflow">if</span> ( window && window-><a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) ) <a name="l02458"></a>02458 { <a name="l02459"></a>02459 <span class="keywordflow">if</span> (!m_frame->m_part->url().hasPath()) <a name="l02460"></a>02460 <span class="keywordflow">return</span> m_frame->m_part->url().prettyURL()+<span class="stringliteral">"/"</span>; <a name="l02461"></a>02461 <span class="keywordflow">else</span> <a name="l02462"></a>02462 <span class="keywordflow">return</span> m_frame->m_part->url().prettyURL(); <a name="l02463"></a>02463 } <a name="l02464"></a>02464 } <a name="l02465"></a>02465 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; <a name="l02466"></a>02466 } <a name="l02467"></a>02467 <a name="l02468"></a>02468 Value LocationFunc::tryCall(ExecState *exec, Object &thisObj, <span class="keyword">const</span> List &args) <a name="l02469"></a>02469 { <a name="l02470"></a>02470 KJS_CHECK_THIS( <a class="code" href="classKJS_1_1Location.html">Location</a>, thisObj ); <a name="l02471"></a>02471 <a class="code" href="classKJS_1_1Location.html">Location</a> *location = static_cast<Location *>(thisObj.imp()); <a name="l02472"></a>02472 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1ReadOnlyPart.html">KParts::ReadOnlyPart</a> *part = location-><a class="code" href="classKJS_1_1Location.html#d92a695b1590356d6bfc819c6202c18c">part</a>(); <a name="l02473"></a>02473 <a name="l02474"></a>02474 <span class="keywordflow">if</span> (!part) <span class="keywordflow">return</span> Undefined(); <a name="l02475"></a>02475 <a name="l02476"></a>02476 <a class="code" href="classKJS_1_1Window.html">Window</a>* window = <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(part); <a name="l02477"></a>02477 <a name="l02478"></a>02478 <span class="keywordflow">if</span> ( !window-><a class="code" href="classKJS_1_1Window.html#84c0b51796afbb8c3d4b40ce916fd009">isSafeScript</a>(exec) && <span class="keywordtype">id</span> != Location::Replace) <a name="l02479"></a>02479 <span class="keywordflow">return</span> Undefined(); <a name="l02480"></a>02480 <a name="l02481"></a>02481 <span class="keywordflow">switch</span> (<span class="keywordtype">id</span>) { <a name="l02482"></a>02482 <span class="keywordflow">case</span> Location::Assign: <a name="l02483"></a>02483 <span class="keywordflow">case</span> Location::Replace: <a name="l02484"></a>02484 <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>(part)-><a class="code" href="classKJS_1_1Window.html#5db0bf8c53ed74bd1d42154943523c96">goURL</a>(exec, args[0].<a class="code" href="classKJS_1_1Location.html#1cc10cbf96843133abf325471dbde4ff">toString</a>(exec).qstring(), <a name="l02485"></a>02485 <span class="keywordtype">id</span> == Location::Replace); <a name="l02486"></a>02486 <span class="keywordflow">break</span>; <a name="l02487"></a>02487 <span class="keywordflow">case</span> Location::Reload: { <a name="l02488"></a>02488 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *khtmlpart = ::qt_cast<KHTMLPart *>(part); <a name="l02489"></a>02489 <span class="keywordflow">if</span> (khtmlpart) <a name="l02490"></a>02490 khtmlpart-><a class="code" href="classKHTMLPart.html#ab1da4089c982eab687dfa1bf6beb8a4">scheduleRedirection</a>(-1, part->url().url(), <span class="keyword">true</span><span class="comment">/*lock history*/</span>); <a name="l02491"></a>02491 <span class="keywordflow">else</span> <a name="l02492"></a>02492 part->openURL(part->url()); <a name="l02493"></a>02493 <span class="keywordflow">break</span>; <a name="l02494"></a>02494 } <a name="l02495"></a>02495 <span class="keywordflow">case</span> Location::ToString: <a name="l02496"></a>02496 <span class="keywordflow">return</span> String(location-><a class="code" href="classKJS_1_1Location.html#1cc10cbf96843133abf325471dbde4ff">toString</a>(exec)); <a name="l02497"></a>02497 } <a name="l02498"></a>02498 <span class="keywordflow">return</span> Undefined(); <a name="l02499"></a>02499 } <a name="l02500"></a>02500 <a name="l02502"></a>02502 <a name="l02503"></a>02503 <span class="keyword">const</span> ClassInfo External::info = { <span class="stringliteral">"External"</span>, 0, 0, 0 }; <a name="l02504"></a>02504 <span class="comment">/*</span> <a name="l02505"></a>02505 <span class="comment">@begin ExternalTable 4</span> <a name="l02506"></a>02506 <span class="comment"> addFavorite External::AddFavorite DontDelete|Function 1</span> <a name="l02507"></a>02507 <span class="comment">@end</span> <a name="l02508"></a>02508 <span class="comment">*/</span> <a name="l02509"></a>02509 IMPLEMENT_PROTOFUNC_DOM(ExternalFunc) <a name="l02510"></a>02510 <a name="l02511"></a>02511 Value External::get(ExecState *exec, const Identifier &p)<span class="keyword"> const</span> <a name="l02512"></a>02512 <span class="keyword"></span>{ <a name="l02513"></a>02513 <span class="keywordflow">return</span> lookupGetFunction<ExternalFunc,ObjectImp>(exec,p,&<a class="code" href="namespaceKJS.html#96e7875613999595cce9e5fcd3049f2e">ExternalTable</a>,<span class="keyword">this</span>); <a name="l02514"></a>02514 } <a name="l02515"></a>02515 <a name="l02516"></a>02516 Value ExternalFunc::tryCall(ExecState *exec, Object &thisObj, <span class="keyword">const</span> List &args) <a name="l02517"></a>02517 { <a name="l02518"></a>02518 KJS_CHECK_THIS( External, thisObj ); <a name="l02519"></a>02519 External *external = static_cast<External *>(thisObj.imp()); <a name="l02520"></a>02520 <a name="l02521"></a>02521 <a class="code" href="classKHTMLPart.html">KHTMLPart</a> *part = external->part; <a name="l02522"></a>02522 <span class="keywordflow">if</span> (!part) <a name="l02523"></a>02523 <span class="keywordflow">return</span> Undefined(); <a name="l02524"></a>02524 <a name="l02525"></a>02525 <a class="code" href="classKHTMLView.html">KHTMLView</a> *widget = part->view(); <a name="l02526"></a>02526 <a name="l02527"></a>02527 <span class="keywordflow">switch</span> (<span class="keywordtype">id</span>) { <a name="l02528"></a>02528 <span class="keywordflow">case</span> External::AddFavorite: <a name="l02529"></a>02529 { <a name="l02530"></a>02530 <span class="preprocessor">#ifndef KONQ_EMBEDDED</span> <a name="l02531"></a>02531 <span class="preprocessor"></span> <span class="keywordflow">if</span> (!widget-><a class="code" href="classKHTMLView.html#9e7dd6e823693039e505e9feeab3beb4">dialogsAllowed</a>()) <a name="l02532"></a>02532 <span class="keywordflow">return</span> Undefined(); <a name="l02533"></a>02533 part->xmlDocImpl()->updateRendering(); <a name="l02534"></a>02534 <span class="keywordflow">if</span> (args.size() != 1 && args.size() != 2) <a name="l02535"></a>02535 <span class="keywordflow">return</span> Undefined(); <a name="l02536"></a>02536 <a name="l02537"></a>02537 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> url = args[0].toString(exec).qstring(); <a name="l02538"></a>02538 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> title; <a name="l02539"></a>02539 <span class="keywordflow">if</span> (args.size() == 2) <a name="l02540"></a>02540 title = args[1].<a class="code" href="classKJS_1_1Location.html#1cc10cbf96843133abf325471dbde4ff">toString</a>(exec).qstring(); <a name="l02541"></a>02541 <a name="l02542"></a>02542 <span class="comment">// AK - don't do anything yet, for the moment i</span> <a name="l02543"></a>02543 <span class="comment">// just wanted the base js handling code in cvs</span> <a name="l02544"></a>02544 <span class="keywordflow">return</span> Undefined(); <a name="l02545"></a>02545 <a name="l02546"></a>02546 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> question; <a name="l02547"></a>02547 <span class="keywordflow">if</span> ( title.<a class="codeRef" doxygen="qt.tag:" href="qstring.html#isEmpty">isEmpty</a>() ) <a name="l02548"></a>02548 question = i18n(<span class="stringliteral">"Do you want a bookmark pointing to the location \"%1\" to be added to your collection?"</span>) <a name="l02549"></a>02549 .<a class="codeRef" doxygen="qt.tag:" href="qstring.html#arg">arg</a>(url); <a name="l02550"></a>02550 <span class="keywordflow">else</span> <a name="l02551"></a>02551 question = i18n(<span class="stringliteral">"Do you want a bookmark pointing to the location \"%1\" titled \"%2\" to be added to your collection?"</span>) <a name="l02552"></a>02552 .<a class="codeRef" doxygen="qt.tag:" href="qstring.html#arg">arg</a>(url).arg(title); <a name="l02553"></a>02553 <a name="l02554"></a>02554 emit part->browserExtension()->requestFocus(part); <a name="l02555"></a>02555 <a name="l02556"></a>02556 <a class="codeRef" doxygen="qt.tag:" href="qstring.html">QString</a> caption; <a name="l02557"></a>02557 <span class="keywordflow">if</span> (!part->url().host().isEmpty()) <a name="l02558"></a>02558 caption = part->url().host() + <span class="stringliteral">" - "</span>; <a name="l02559"></a>02559 caption += i18n(<span class="stringliteral">"JavaScript Attempted Bookmark Insert"</span>); <a name="l02560"></a>02560 <a name="l02561"></a>02561 <span class="keywordflow">if</span> (<a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#334786d77558a971d1a58c09bdfff316">KMessageBox::warningYesNo</a>( <a name="l02562"></a>02562 widget, question, caption, <a name="l02563"></a>02563 i18n(<span class="stringliteral">"Insert"</span>), i18n(<span class="stringliteral">"Disallow"</span>)) == <a class="codeRef" doxygen="kdeui.tag:../../kdeui/html/" href="../../kdeui/html/classKMessageBox.html#7b65482f7d03a391aff64c73f7cae32a2a5a0869dd1dad4b9dc0a83308ec5f8c">KMessageBox::Yes</a>) <a name="l02564"></a>02564 { <a name="l02565"></a>02565 KBookmarkManager *mgr = KBookmarkManager::userBookmarksManager(); <a name="l02566"></a>02566 mgr->addBookmarkDialog(url,title); <a name="l02567"></a>02567 } <a name="l02568"></a>02568 <span class="preprocessor">#else</span> <a name="l02569"></a>02569 <span class="preprocessor"></span> <span class="keywordflow">return</span> Undefined(); <a name="l02570"></a>02570 <span class="preprocessor">#endif</span> <a name="l02571"></a>02571 <span class="preprocessor"></span> <span class="keywordflow">break</span>; <a name="l02572"></a>02572 } <a name="l02573"></a>02573 <span class="keywordflow">default</span>: <a name="l02574"></a>02574 <span class="keywordflow">return</span> Undefined(); <a name="l02575"></a>02575 } <a name="l02576"></a>02576 <a name="l02577"></a>02577 <span class="keywordflow">return</span> Undefined(); <a name="l02578"></a>02578 } <a name="l02579"></a>02579 <a name="l02581"></a>02581 <a name="l02582"></a>02582 <span class="keyword">const</span> ClassInfo History::info = { <span class="stringliteral">"History"</span>, 0, 0, 0 }; <a name="l02583"></a>02583 <span class="comment">/*</span> <a name="l02584"></a>02584 <span class="comment">@begin HistoryTable 4</span> <a name="l02585"></a>02585 <span class="comment"> length History::Length DontDelete|ReadOnly</span> <a name="l02586"></a>02586 <span class="comment"> back History::Back DontDelete|Function 0</span> <a name="l02587"></a>02587 <span class="comment"> forward History::Forward DontDelete|Function 0</span> <a name="l02588"></a>02588 <span class="comment"> go History::Go DontDelete|Function 1</span> <a name="l02589"></a>02589 <span class="comment">@end</span> <a name="l02590"></a>02590 <span class="comment">*/</span> <a name="l02591"></a>02591 IMPLEMENT_PROTOFUNC_DOM(HistoryFunc) <a name="l02592"></a>02592 <a name="l02593"></a>02593 Value History::get(ExecState *exec, const Identifier &p)<span class="keyword"> const</span> <a name="l02594"></a>02594 <span class="keyword"></span>{ <a name="l02595"></a>02595 <span class="keywordflow">return</span> lookupGet<HistoryFunc,History,ObjectImp>(exec,p,&<a class="code" href="namespaceKJS.html#af7d45d9adaa83443c3b14ac37db9cfb">HistoryTable</a>,<span class="keyword">this</span>); <a name="l02596"></a>02596 } <a name="l02597"></a>02597 <a name="l02598"></a>02598 Value History::getValueProperty(ExecState *, <span class="keywordtype">int</span> token)<span class="keyword"> const</span> <a name="l02599"></a>02599 <span class="keyword"></span>{ <a name="l02600"></a>02600 <span class="comment">// if previous or next is implemented, make sure its not a major</span> <a name="l02601"></a>02601 <span class="comment">// privacy leak (see i.e. http://security.greymagic.com/adv/gm005-op/)</span> <a name="l02602"></a>02602 <span class="keywordflow">switch</span> (token) { <a name="l02603"></a>02603 <span class="keywordflow">case</span> Length: <a name="l02604"></a>02604 { <a name="l02605"></a>02605 <span class="keywordflow">if</span> ( !part ) <a name="l02606"></a>02606 <span class="keywordflow">return</span> Number( 0 ); <a name="l02607"></a>02607 <a name="l02608"></a>02608 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *ext = part->browserExtension(); <a name="l02609"></a>02609 <span class="keywordflow">if</span> ( !ext ) <a name="l02610"></a>02610 <span class="keywordflow">return</span> Number( 0 ); <a name="l02611"></a>02611 <a name="l02612"></a>02612 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserInterface.html">KParts::BrowserInterface</a> *iface = ext-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#8bdeb19e1954a60fd49be6d7ab11d086">browserInterface</a>(); <a name="l02613"></a>02613 <span class="keywordflow">if</span> ( !iface ) <a name="l02614"></a>02614 <span class="keywordflow">return</span> Number( 0 ); <a name="l02615"></a>02615 <a name="l02616"></a>02616 <a class="codeRef" doxygen="qt.tag:" href="qvariant.html">QVariant</a> length = iface-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#property">property</a>( <span class="stringliteral">"historyLength"</span> ); <a name="l02617"></a>02617 <a name="l02618"></a>02618 <span class="keywordflow">if</span> ( length.<a class="codeRef" doxygen="qt.tag:" href="qvariant.html#type">type</a>() != QVariant::UInt ) <a name="l02619"></a>02619 <span class="keywordflow">return</span> Number( 0 ); <a name="l02620"></a>02620 <a name="l02621"></a>02621 <span class="keywordflow">return</span> Number( length.<a class="codeRef" doxygen="qt.tag:" href="qvariant.html#toUInt">toUInt</a>() ); <a name="l02622"></a>02622 } <a name="l02623"></a>02623 <span class="keywordflow">default</span>: <a name="l02624"></a>02624 <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#ggfbb9aa4a84d6c0563d46550454b9714b">kdDebug</a>(6070) << <span class="stringliteral">"WARNING: Unhandled token in History::getValueProperty : "</span> << token << <a class="codeRef" doxygen="kdecore.tag:../../kdecore/html/" href="../../kdecore/html/group__kdebug.html#gg313d520ed8f8f6b46eeef22cfb3b082a">endl</a>; <a name="l02625"></a>02625 <span class="keywordflow">return</span> Undefined(); <a name="l02626"></a>02626 } <a name="l02627"></a>02627 } <a name="l02628"></a>02628 <a name="l02629"></a>02629 Value HistoryFunc::tryCall(ExecState *exec, Object &thisObj, <span class="keyword">const</span> List &args) <a name="l02630"></a>02630 { <a name="l02631"></a>02631 KJS_CHECK_THIS( History, thisObj ); <a name="l02632"></a>02632 History *history = static_cast<History *>(thisObj.imp()); <a name="l02633"></a>02633 <a name="l02634"></a>02634 Value v = args[0]; <a name="l02635"></a>02635 Number n; <a name="l02636"></a>02636 <span class="keywordflow">if</span>(v.isValid()) <a name="l02637"></a>02637 n = v.toInteger(exec); <a name="l02638"></a>02638 <a name="l02639"></a>02639 <span class="keywordtype">int</span> steps; <a name="l02640"></a>02640 <span class="keywordflow">switch</span> (<span class="keywordtype">id</span>) { <a name="l02641"></a>02641 <span class="keywordflow">case</span> History::Back: <a name="l02642"></a>02642 steps = -1; <a name="l02643"></a>02643 <span class="keywordflow">break</span>; <a name="l02644"></a>02644 <span class="keywordflow">case</span> History::Forward: <a name="l02645"></a>02645 steps = 1; <a name="l02646"></a>02646 <span class="keywordflow">break</span>; <a name="l02647"></a>02647 <span class="keywordflow">case</span> History::Go: <a name="l02648"></a>02648 steps = n.intValue(); <a name="l02649"></a>02649 <span class="keywordflow">break</span>; <a name="l02650"></a>02650 <span class="keywordflow">default</span>: <a name="l02651"></a>02651 <span class="keywordflow">return</span> Undefined(); <a name="l02652"></a>02652 } <a name="l02653"></a>02653 <a name="l02654"></a>02654 <span class="comment">// Special case for go(0) from a frame -> reload only the frame</span> <a name="l02655"></a>02655 <span class="comment">// go(i!=0) from a frame navigates into the history of the frame only,</span> <a name="l02656"></a>02656 <span class="comment">// in both IE and NS (but not in Mozilla).... we can't easily do that</span> <a name="l02657"></a>02657 <span class="comment">// in Konqueror...</span> <a name="l02658"></a>02658 <span class="keywordflow">if</span> (!steps) <span class="comment">// add && history->part->parentPart() to get only frames, but doesn't matter</span> <a name="l02659"></a>02659 { <a name="l02660"></a>02660 history->part->openURL( history->part->url() ); <a name="l02661"></a>02661 } <span class="keywordflow">else</span> <a name="l02662"></a>02662 { <a name="l02663"></a>02663 <span class="comment">// Delay it.</span> <a name="l02664"></a>02664 <span class="comment">// Testcase: history.back(); alert("hello");</span> <a name="l02665"></a>02665 <a class="code" href="classKJS_1_1Window.html">Window</a>* window = <a class="code" href="classKJS_1_1Window.html#0bb3f87490d27d503f5ef5c656ed48e4">Window::retrieveWindow</a>( history->part ); <a name="l02666"></a>02666 window-><a class="code" href="classKJS_1_1Window.html#33fb9f3499e852a178d7d039e4e305eb">delayedGoHistory</a>( steps ); <a name="l02667"></a>02667 } <a name="l02668"></a>02668 <span class="keywordflow">return</span> Undefined(); <a name="l02669"></a>02669 } <a name="l02670"></a>02670 <a name="l02672"></a>02672 <a name="l02673"></a>02673 <span class="preprocessor">#ifdef Q_WS_QWS</span> <a name="l02674"></a>02674 <span class="preprocessor"></span> <a name="l02675"></a>02675 <span class="keyword">const</span> ClassInfo Konqueror::info = { <span class="stringliteral">"Konqueror"</span>, 0, 0, 0 }; <a name="l02676"></a>02676 <a name="l02677"></a>02677 <span class="keywordtype">bool</span> Konqueror::hasProperty(ExecState *exec, <span class="keyword">const</span> Identifier &p)<span class="keyword"> const</span> <a name="l02678"></a>02678 <span class="keyword"></span>{ <a name="l02679"></a>02679 <span class="keywordflow">if</span> ( p.qstring().startsWith( <span class="stringliteral">"goHistory"</span> ) ) <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l02680"></a>02680 <a name="l02681"></a>02681 <span class="keywordflow">return</span> <span class="keyword">true</span>; <a name="l02682"></a>02682 } <a name="l02683"></a>02683 <a name="l02684"></a>02684 Value Konqueror::get(ExecState *exec, <span class="keyword">const</span> Identifier &p)<span class="keyword"> const</span> <a name="l02685"></a>02685 <span class="keyword"></span>{ <a name="l02686"></a>02686 <span class="keywordflow">if</span> ( p == <span class="stringliteral">"goHistory"</span> || part->url().protocol() != <span class="stringliteral">"http"</span> || part->url().host() != <span class="stringliteral">"localhost"</span> ) <a name="l02687"></a>02687 <span class="keywordflow">return</span> Undefined(); <a name="l02688"></a>02688 <a name="l02689"></a>02689 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *ext = part->browserExtension(); <a name="l02690"></a>02690 <span class="keywordflow">if</span> ( ext ) { <a name="l02691"></a>02691 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserInterface.html">KParts::BrowserInterface</a> *iface = ext-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#8bdeb19e1954a60fd49be6d7ab11d086">browserInterface</a>(); <a name="l02692"></a>02692 <span class="keywordflow">if</span> ( iface ) { <a name="l02693"></a>02693 <a class="codeRef" doxygen="qt.tag:" href="qvariant.html">QVariant</a> prop = iface-><a class="codeRef" doxygen="qt.tag:" href="qobject.html#property">property</a>( p.qstring().latin1() ); <a name="l02694"></a>02694 <a name="l02695"></a>02695 <span class="keywordflow">if</span> ( prop.<a class="codeRef" doxygen="qt.tag:" href="qvariant.html#isValid">isValid</a>() ) { <a name="l02696"></a>02696 <span class="keywordflow">switch</span>( prop.<a class="codeRef" doxygen="qt.tag:" href="qvariant.html#type">type</a>() ) { <a name="l02697"></a>02697 <span class="keywordflow">case</span> QVariant::Int: <a name="l02698"></a>02698 <span class="keywordflow">return</span> Number( prop.<a class="codeRef" doxygen="qt.tag:" href="qvariant.html#toInt">toInt</a>() ); <a name="l02699"></a>02699 <span class="keywordflow">case</span> QVariant::String: <a name="l02700"></a>02700 <span class="keywordflow">return</span> String( prop.<a class="codeRef" doxygen="qt.tag:" href="qvariant.html#toString">toString</a>() ); <a name="l02701"></a>02701 <span class="keywordflow">default</span>: <a name="l02702"></a>02702 <span class="keywordflow">break</span>; <a name="l02703"></a>02703 } <a name="l02704"></a>02704 } <a name="l02705"></a>02705 } <a name="l02706"></a>02706 } <a name="l02707"></a>02707 <a name="l02708"></a>02708 <span class="keywordflow">return</span> Value( <span class="keyword">new</span> KonquerorFunc(exec, <span class="keyword">this</span>, p.qstring().latin1() ) ); <a name="l02709"></a>02709 } <a name="l02710"></a>02710 <a name="l02711"></a>02711 Value <a class="code" href="classKJS_1_1DOMFunction.html#276fb3c503fcfe3514eb60d38a964a81">KonquerorFunc::tryCall</a>(ExecState *exec, Object &, <span class="keyword">const</span> List &args) <a name="l02712"></a>02712 { <a name="l02713"></a>02713 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html">KParts::BrowserExtension</a> *ext = konqueror->part->browserExtension(); <a name="l02714"></a>02714 <a name="l02715"></a>02715 <span class="keywordflow">if</span> (!ext) <a name="l02716"></a>02716 <span class="keywordflow">return</span> Undefined(); <a name="l02717"></a>02717 <a name="l02718"></a>02718 <a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserInterface.html">KParts::BrowserInterface</a> *iface = ext-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserExtension.html#8bdeb19e1954a60fd49be6d7ab11d086">browserInterface</a>(); <a name="l02719"></a>02719 <a name="l02720"></a>02720 <span class="keywordflow">if</span> ( !iface ) <a name="l02721"></a>02721 <span class="keywordflow">return</span> Undefined(); <a name="l02722"></a>02722 <a name="l02723"></a>02723 <a class="codeRef" doxygen="qt.tag:" href="qcstring.html">QCString</a> n = m_name.data(); <a name="l02724"></a>02724 n += <span class="stringliteral">"()"</span>; <a name="l02725"></a>02725 iface-><a class="codeRef" doxygen="kparts.tag:../../kparts/html/" href="../../kparts/html/classKParts_1_1BrowserInterface.html#2b7c63a3eaa196f53b3cc679714de295">callMethod</a>( n.data(), <a class="codeRef" doxygen="qt.tag:" href="qvariant.html">QVariant</a>() ); <a name="l02726"></a>02726 <a name="l02727"></a>02727 <span class="keywordflow">return</span> Undefined(); <a name="l02728"></a>02728 } <a name="l02729"></a>02729 <a name="l02730"></a>02730 UString Konqueror::toString(ExecState *)<span class="keyword"> const</span> <a name="l02731"></a>02731 <span class="keyword"></span>{ <a name="l02732"></a>02732 <span class="keywordflow">return</span> UString(<span class="stringliteral">"[object Konqueror]"</span>); <a name="l02733"></a>02733 } <a name="l02734"></a>02734 <a name="l02735"></a>02735 <span class="preprocessor">#endif</span> <a name="l02737"></a>02737 <span class="preprocessor"></span> <a name="l02738"></a>02738 <span class="preprocessor"></span><span class="preprocessor">#include "kjs_window.moc"</span> </pre></div> </div></div> </td> </tr> <tr> <td valign="top" id="leftmenu" width="25%"> <a name="navigation"></a> <div class="menu_box"><h2>khtml</h2> <div class="nav_list"> <ul><li><a href="index.html">Main Page</a></li><li><a href="namespaces.html">Namespace List</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="namespacemembers.html">Namespace Members</a></li><li><a href="functions.html">Class Members</a></li><li><a href="pages.html">Related Pages</a></li></ul> <!-- <h2>Class Picker</h2> <div style="text-align: center;"> <form name="guideform"> <select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value"> <option value="annotated.html">-- Choose --</option> <option value="classAppletParameterDialog.html">appletparameterdialog</option>, <option value="classDOM_1_1AbstractView.html">dom::abstractview</option>, <option value="classDOM_1_1Attr.html">dom::attr</option>, <option value="classDOM_1_1CDATASection.html">dom::cdatasection</option>, <option value="classDOM_1_1CharacterData.html">dom::characterdata</option>, <option value="classDOM_1_1Comment.html">dom::comment</option>, <option value="classDOM_1_1Counter.html">dom::counter</option>, <option value="classDOM_1_1CounterActImpl.html">dom::counteractimpl</option>, <option value="classDOM_1_1CounterImpl.html">dom::counterimpl</option>, <option value="classDOM_1_1CSS2Azimuth.html">dom::css2azimuth</option>, <option value="classDOM_1_1CSS2AzimuthImpl.html">dom::css2azimuthimpl</option>, <option value="classDOM_1_1CSS2BackgroundPosition.html">dom::css2backgroundposition</option>, <option value="classDOM_1_1CSS2BackgroundPositionImpl.html">dom::css2backgroundpositionimpl</option>, <option value="classDOM_1_1CSS2BorderSpacing.html">dom::css2borderspacing</option>, <option value="classDOM_1_1CSS2BorderSpacingImpl.html">dom::css2borderspacingimpl</option>, <option value="classDOM_1_1CSS2CounterIncrement.html">dom::css2counterincrement</option>, <option value="classDOM_1_1CSS2CounterIncrementImpl.html">dom::css2counterincrementimpl</option>, <option value="classDOM_1_1CSS2CounterReset.html">dom::css2counterreset</option>, <option value="classDOM_1_1CSS2CounterResetImpl.html">dom::css2counterresetimpl</option>, <option value="classDOM_1_1CSS2Cursor.html">dom::css2cursor</option>, <option value="classDOM_1_1CSS2CursorImpl.html">dom::css2cursorimpl</option>, <option value="classDOM_1_1CSS2FontFaceSrc.html">dom::css2fontfacesrc</option>, <option value="classDOM_1_1CSS2FontFaceSrcImpl.html">dom::css2fontfacesrcimpl</option>, <option value="classDOM_1_1CSS2FontFaceWidths.html">dom::css2fontfacewidths</option>, <option value="classDOM_1_1CSS2FontFaceWidthsImpl.html">dom::css2fontfacewidthsimpl</option>, <option value="classDOM_1_1CSS2PageSize.html">dom::css2pagesize</option>, <option value="classDOM_1_1CSS2PageSizeImpl.html">dom::css2pagesizeimpl</option>, <option value="classDOM_1_1CSS2PlayDuring.html">dom::css2playduring</option>, <option value="classDOM_1_1CSS2PlayDuringImpl.html">dom::css2playduringimpl</option>, <option value="classDOM_1_1CSS2Properties.html">dom::css2properties</option>, <option value="classDOM_1_1CSS2PropertiesImpl.html">dom::css2propertiesimpl</option>, <option value="classDOM_1_1CSS2TextShadow.html">dom::css2textshadow</option>, <option value="classDOM_1_1CSS2TextShadowImpl.html">dom::css2textshadowimpl</option>, <option value="classDOM_1_1CSSCharsetRule.html">dom::csscharsetrule</option>, <option value="classDOM_1_1CSSCharsetRuleImpl.html">dom::csscharsetruleimpl</option>, <option value="classDOM_1_1CSSException.html">dom::cssexception</option>, <option value="classDOM_1_1CSSFontFaceRule.html">dom::cssfontfacerule</option>, <option value="classDOM_1_1CSSFontFaceRuleImpl.html">dom::cssfontfaceruleimpl</option>, <option value="classDOM_1_1CSSImageValueImpl.html">dom::cssimagevalueimpl</option>, <option value="classDOM_1_1CSSImportRule.html">dom::cssimportrule</option>, <option value="classDOM_1_1CSSImportRuleImpl.html">dom::cssimportruleimpl</option>, <option value="classDOM_1_1CSSInheritedValueImpl.html">dom::cssinheritedvalueimpl</option>, <option value="classDOM_1_1CSSInitialValueImpl.html">dom::cssinitialvalueimpl</option>, <option value="classDOM_1_1CSSMediaRule.html">dom::cssmediarule</option>, <option value="classDOM_1_1CSSMediaRuleImpl.html">dom::cssmediaruleimpl</option>, <option value="classDOM_1_1CSSPageRule.html">dom::csspagerule</option>, <option value="classDOM_1_1CSSPageRuleImpl.html">dom::csspageruleimpl</option>, <option value="classDOM_1_1CSSParser.html">dom::cssparser</option>, <option value="classDOM_1_1CSSPrimitiveValue.html">dom::cssprimitivevalue</option>, <option value="classDOM_1_1CSSPrimitiveValueImpl.html">dom::cssprimitivevalueimpl</option>, <option value="classDOM_1_1CSSProperty.html">dom::cssproperty</option>, <option value="classDOM_1_1CSSQuirkPrimitiveValueImpl.html">dom::cssquirkprimitivevalueimpl</option>, <option value="classDOM_1_1CSSRule.html">dom::cssrule</option>, <option value="classDOM_1_1CSSRuleImpl.html">dom::cssruleimpl</option>, <option value="classDOM_1_1CSSRuleList.html">dom::cssrulelist</option>, <option value="classDOM_1_1CSSRuleListImpl.html">dom::cssrulelistimpl</option>, <option value="classDOM_1_1CSSSelector.html">dom::cssselector</option>, <option value="classDOM_1_1CSSStyleDeclaration.html">dom::cssstyledeclaration</option>, <option value="classDOM_1_1CSSStyleDeclarationImpl.html">dom::cssstyledeclarationimpl</option>, <option value="classDOM_1_1CSSStyleRule.html">dom::cssstylerule</option>, <option value="classDOM_1_1CSSStyleRuleImpl.html">dom::cssstyleruleimpl</option>, <option value="classDOM_1_1CSSStyleSheet.html">dom::cssstylesheet</option>, <option value="classDOM_1_1CSSStyleSheetImpl.html">dom::cssstylesheetimpl</option>, <option value="classDOM_1_1CSSUnknownRule.html">dom::cssunknownrule</option>, <option value="classDOM_1_1CSSUnknownRuleImpl.html">dom::cssunknownruleimpl</option>, <option value="classDOM_1_1CSSValue.html">dom::cssvalue</option>, <option value="classDOM_1_1CSSValueImpl.html">dom::cssvalueimpl</option>, <option value="classDOM_1_1CSSValueList.html">dom::cssvaluelist</option>, <option value="classDOM_1_1CSSValueListImpl.html">dom::cssvaluelistimpl</option>, <option value="classDOM_1_1CustomNodeFilter.html">dom::customnodefilter</option>, <option value="classDOM_1_1Document.html">dom::document</option>, <option value="classDOM_1_1DocumentFragment.html">dom::documentfragment</option>, <option value="classDOM_1_1DocumentStyle.html">dom::documentstyle</option>, <option value="classDOM_1_1DocumentType.html">dom::documenttype</option>, <option value="classDOM_1_1DOMException.html">dom::domexception</option>, <option value="classDOM_1_1DOMImplementation.html">dom::domimplementation</option>, <option value="classDOM_1_1DomShared.html">dom::domshared</option>, <option value="classDOM_1_1DOMString.html">dom::domstring</option>, <option value="classDOM_1_1Element.html">dom::element</option>, <option value="classDOM_1_1Entity.html">dom::entity</option>, <option value="classDOM_1_1EntityReference.html">dom::entityreference</option>, <option value="classDOM_1_1Event.html">dom::event</option>, <option value="classDOM_1_1EventException.html">dom::eventexception</option>, <option value="classDOM_1_1EventListener.html">dom::eventlistener</option>, <option value="classDOM_1_1FontFamilyValueImpl.html">dom::fontfamilyvalueimpl</option>, <option value="classDOM_1_1FontValueImpl.html">dom::fontvalueimpl</option>, <option value="classDOM_1_1HTMLAnchorElement.html">dom::htmlanchorelement</option>, <option value="classDOM_1_1HTMLAppletElement.html">dom::htmlappletelement</option>, <option value="classDOM_1_1HTMLAreaElement.html">dom::htmlareaelement</option>, <option value="classDOM_1_1HTMLBaseElement.html">dom::htmlbaseelement</option>, <option value="classDOM_1_1HTMLBaseFontElement.html">dom::htmlbasefontelement</option>, <option value="classDOM_1_1HTMLBlockquoteElement.html">dom::htmlblockquoteelement</option>, <option value="classDOM_1_1HTMLBodyElement.html">dom::htmlbodyelement</option>, <option value="classDOM_1_1HTMLBRElement.html">dom::htmlbrelement</option>, <option value="classDOM_1_1HTMLButtonElement.html">dom::htmlbuttonelement</option>, <option value="classDOM_1_1HTMLCollection.html">dom::htmlcollection</option>, <option value="classDOM_1_1HTMLDirectoryElement.html">dom::htmldirectoryelement</option>, <option value="classDOM_1_1HTMLDivElement.html">dom::htmldivelement</option>, <option value="classDOM_1_1HTMLDListElement.html">dom::htmldlistelement</option>, <option value="classDOM_1_1HTMLDocument.html">dom::htmldocument</option>, <option value="classDOM_1_1HTMLElement.html">dom::htmlelement</option>, <option value="classDOM_1_1HTMLFieldSetElement.html">dom::htmlfieldsetelement</option>, <option value="classDOM_1_1HTMLFontElement.html">dom::htmlfontelement</option>, <option value="classDOM_1_1HTMLFormCollection.html">dom::htmlformcollection</option>, <option value="classDOM_1_1HTMLFormElement.html">dom::htmlformelement</option>, <option value="classDOM_1_1HTMLFrameElement.html">dom::htmlframeelement</option>, <option value="classDOM_1_1HTMLFrameSetElement.html">dom::htmlframesetelement</option>, <option value="classDOM_1_1HTMLHeadElement.html">dom::htmlheadelement</option>, <option value="classDOM_1_1HTMLHeadingElement.html">dom::htmlheadingelement</option>, <option value="classDOM_1_1HTMLHRElement.html">dom::htmlhrelement</option>, <option value="classDOM_1_1HTMLHtmlElement.html">dom::htmlhtmlelement</option>, <option value="classDOM_1_1HTMLIFrameElement.html">dom::htmliframeelement</option>, <option value="classDOM_1_1HTMLImageElement.html">dom::htmlimageelement</option>, <option value="classDOM_1_1HTMLInputElement.html">dom::htmlinputelement</option>, <option value="classDOM_1_1HTMLIsIndexElement.html">dom::htmlisindexelement</option>, <option value="classDOM_1_1HTMLLabelElement.html">dom::htmllabelelement</option>, <option value="classDOM_1_1HTMLLayerElement.html">dom::htmllayerelement</option>, <option value="classDOM_1_1HTMLLegendElement.html">dom::htmllegendelement</option>, <option value="classDOM_1_1HTMLLIElement.html">dom::htmllielement</option>, <option value="classDOM_1_1HTMLLinkElement.html">dom::htmllinkelement</option>, <option value="classDOM_1_1HTMLMapElement.html">dom::htmlmapelement</option>, <option value="classDOM_1_1HTMLMappedNameCollection.html">dom::htmlmappednamecollection</option>, <option value="classDOM_1_1HTMLMenuElement.html">dom::htmlmenuelement</option>, <option value="classDOM_1_1HTMLMetaElement.html">dom::htmlmetaelement</option>, <option value="classDOM_1_1HTMLModElement.html">dom::htmlmodelement</option>, <option value="classDOM_1_1HTMLObjectElement.html">dom::htmlobjectelement</option>, <option value="classDOM_1_1HTMLOListElement.html">dom::htmlolistelement</option>, <option value="classDOM_1_1HTMLOptGroupElement.html">dom::htmloptgroupelement</option>, <option value="classDOM_1_1HTMLOptionElement.html">dom::htmloptionelement</option>, <option value="classDOM_1_1HTMLParagraphElement.html">dom::htmlparagraphelement</option>, <option value="classDOM_1_1HTMLParamElement.html">dom::htmlparamelement</option>, <option value="classDOM_1_1HTMLPreElement.html">dom::htmlpreelement</option>, <option value="classDOM_1_1HTMLQuoteElement.html">dom::htmlquoteelement</option>, <option value="classDOM_1_1HTMLScriptElement.html">dom::htmlscriptelement</option>, <option value="classDOM_1_1HTMLSelectElement.html">dom::htmlselectelement</option>, <option value="classDOM_1_1HTMLStyleElement.html">dom::htmlstyleelement</option>, <option value="classDOM_1_1HTMLTableCaptionElement.html">dom::htmltablecaptionelement</option>, <option value="classDOM_1_1HTMLTableCellElement.html">dom::htmltablecellelement</option>, <option value="classDOM_1_1HTMLTableColElement.html">dom::htmltablecolelement</option>, <option value="classDOM_1_1HTMLTableElement.html">dom::htmltableelement</option>, <option value="classDOM_1_1HTMLTableRowElement.html">dom::htmltablerowelement</option>, <option value="classDOM_1_1HTMLTableSectionElement.html">dom::htmltablesectionelement</option>, <option value="classDOM_1_1HTMLTextAreaElement.html">dom::htmltextareaelement</option>, <option value="classDOM_1_1HTMLTitleElement.html">dom::htmltitleelement</option>, <option value="classDOM_1_1HTMLUListElement.html">dom::htmlulistelement</option>, <option value="classDOM_1_1LinkStyle.html">dom::linkstyle</option>, <option value="classDOM_1_1MediaList.html">dom::medialist</option>, <option value="classDOM_1_1MediaListImpl.html">dom::medialistimpl</option>, <option value="classDOM_1_1MouseEvent.html">dom::mouseevent</option>, <option value="classDOM_1_1MutationEvent.html">dom::mutationevent</option>, <option value="classDOM_1_1NamedNodeMap.html">dom::namednodemap</option>, <option value="classDOM_1_1Node.html">dom::node</option>, <option value="classDOM_1_1NodeFilter.html">dom::nodefilter</option>, <option value="classDOM_1_1NodeIterator.html">dom::nodeiterator</option>, <option value="classDOM_1_1NodeList.html">dom::nodelist</option>, <option value="classDOM_1_1Notation.html">dom::notation</option>, <option value="classDOM_1_1PairImpl.html">dom::pairimpl</option>, <option value="classDOM_1_1ProcessingInstruction.html">dom::processinginstruction</option>, <option value="classDOM_1_1QuotesValueImpl.html">dom::quotesvalueimpl</option>, <option value="classDOM_1_1Range.html">dom::range</option>, <option value="classDOM_1_1RangeException.html">dom::rangeexception</option>, <option value="classDOM_1_1Rect.html">dom::rect</option>, <option value="classDOM_1_1RectImpl.html">dom::rectimpl</option>, <option value="classDOM_1_1RGBColor.html">dom::rgbcolor</option>, <option value="classDOM_1_1ShadowValueImpl.html">dom::shadowvalueimpl</option>, <option value="classDOM_1_1StyleBaseImpl.html">dom::stylebaseimpl</option>, <option value="classDOM_1_1StyleListImpl.html">dom::stylelistimpl</option>, <option value="classDOM_1_1StyleSheet.html">dom::stylesheet</option>, <option value="classDOM_1_1StyleSheetImpl.html">dom::stylesheetimpl</option>, <option value="classDOM_1_1StyleSheetList.html">dom::stylesheetlist</option>, <option value="classDOM_1_1StyleSheetListImpl.html">dom::stylesheetlistimpl</option>, <option value="classDOM_1_1Text.html">dom::text</option>, <option value="classDOM_1_1TextEvent.html">dom::textevent</option>, <option value="classDOM_1_1TreeWalker.html">dom::treewalker</option>, <option value="classDOM_1_1UIEvent.html">dom::uievent</option>, <option value="classDOM_1_1ValueList.html">dom::valuelist</option>, <option value="classDOMTreeView.html">domtreeview</option>, <option value="classKHTMLFactory.html">khtmlfactory</option>, <option value="classKHTMLImage.html">khtmlimage</option>, <option value="classKHTMLImageBrowserExtension.html">khtmlimagebrowserextension</option>, <option value="classKHTMLImageFactory.html">khtmlimagefactory</option>, <option value="classKHTMLInfoDlg.html">khtmlinfodlg</option>, <option value="classKHTMLPageCache.html">khtmlpagecache</option>, <option value="classKHTMLPageCacheDelivery.html">khtmlpagecachedelivery</option>, <option value="classKHTMLPart.html">khtmlpart</option>, <option value="classKHTMLPartBrowserExtension.html">khtmlpartbrowserextension</option>, <option value="classKHTMLPartBrowserHostExtension.html">khtmlpartbrowserhostextension</option>, <option value="classKHTMLPartIface.html">khtmlpartiface</option>, <option value="classKHTMLPopupGUIClient.html">khtmlpopupguiclient</option>, <option value="classKHTMLPrintSettings.html">khtmlprintsettings</option>, <option value="classKHTMLRun.html">khtmlrun</option>, <option value="classKHTMLSettings.html">khtmlsettings</option>, <option value="classKHTMLView.html">khtmlview</option>, <option value="classKHTMLZoomFactorAction.html">khtmlzoomfactoraction</option>, <option value="classKJavaApplet.html">kjavaapplet</option>, <option value="classKJavaAppletContext.html">kjavaappletcontext</option>, <option value="classKJavaAppletServer.html">kjavaappletserver</option>, <option value="classKJavaAppletViewer.html">kjavaappletviewer</option>, <option value="classKJavaAppletViewerBrowserExtension.html">kjavaappletviewerbrowserextension</option>, <option value="classKJavaAppletViewerFactory.html">kjavaappletviewerfactory</option>, <option value="classKJavaAppletViewerLiveConnectExtension.html">kjavaappletviewerliveconnectextension</option>, <option value="classKJavaAppletWidget.html">kjavaappletwidget</option>, <option value="classKJavaDownloader.html">kjavadownloader</option>, <option value="classKJavaKIOJob.html">kjavakiojob</option>, <option value="classKJavaProcess.html">kjavaprocess</option>, <option value="classKJavaUploader.html">kjavauploader</option>, <option value="classKJS_1_1CSSPrimitiveValueConstructor.html">kjs::cssprimitivevalueconstructor</option>, <option value="classKJS_1_1CSSRuleConstructor.html">kjs::cssruleconstructor</option>, <option value="classKJS_1_1CSSValueConstructor.html">kjs::cssvalueconstructor</option>, <option value="classKJS_1_1DateTimeMS.html">kjs::datetimems</option>, <option value="classKJS_1_1DOMAbstractView.html">kjs::domabstractview</option>, <option value="classKJS_1_1DOMAttr.html">kjs::domattr</option>, <option value="classKJS_1_1DOMCharacterData.html">kjs::domcharacterdata</option>, <option value="classKJS_1_1DOMCounter.html">kjs::domcounter</option>, <option value="classKJS_1_1DOMCSSPrimitiveValue.html">kjs::domcssprimitivevalue</option>, <option value="classKJS_1_1DOMCSSRule.html">kjs::domcssrule</option>, <option value="classKJS_1_1DOMCSSRuleList.html">kjs::domcssrulelist</option>, <option value="classKJS_1_1DOMCSSStyleDeclaration.html">kjs::domcssstyledeclaration</option>, <option value="classKJS_1_1DOMCSSStyleSheet.html">kjs::domcssstylesheet</option>, <option value="classKJS_1_1DOMCSSValue.html">kjs::domcssvalue</option>, <option value="classKJS_1_1DOMCSSValueList.html">kjs::domcssvaluelist</option>, <option value="classKJS_1_1DOMDocument.html">kjs::domdocument</option>, <option value="classKJS_1_1DOMDocumentType.html">kjs::domdocumenttype</option>, <option value="classKJS_1_1DOMDOMImplementation.html">kjs::domdomimplementation</option>, <option value="classKJS_1_1DOMElement.html">kjs::domelement</option>, <option value="classKJS_1_1DOMEntity.html">kjs::domentity</option>, <option value="classKJS_1_1DOMEvent.html">kjs::domevent</option>, <option value="classKJS_1_1DOMExceptionConstructor.html">kjs::domexceptionconstructor</option>, <option value="classKJS_1_1DOMFunction.html">kjs::domfunction</option>, <option value="classKJS_1_1DOMKeyboardEvent.html">kjs::domkeyboardevent</option>, <option value="classKJS_1_1DOMKeyEventBase.html">kjs::domkeyeventbase</option>, <option value="classKJS_1_1DOMMediaList.html">kjs::dommedialist</option>, <option value="classKJS_1_1DOMMouseEvent.html">kjs::dommouseevent</option>, <option value="classKJS_1_1DOMMutationEvent.html">kjs::dommutationevent</option>, <option value="classKJS_1_1DOMNamedNodeMap.html">kjs::domnamednodemap</option>, <option value="classKJS_1_1DOMNamedNodesCollection.html">kjs::domnamednodescollection</option>, <option value="classKJS_1_1DOMNode.html">kjs::domnode</option>, <option value="classKJS_1_1DOMNodeFilter.html">kjs::domnodefilter</option>, <option value="classKJS_1_1DOMNodeIterator.html">kjs::domnodeiterator</option>, <option value="classKJS_1_1DOMNodeList.html">kjs::domnodelist</option>, <option value="classKJS_1_1DOMNotation.html">kjs::domnotation</option>, <option value="classKJS_1_1DOMObject.html">kjs::domobject</option>, <option value="classKJS_1_1DOMParser.html">kjs::domparser</option>, <option value="classKJS_1_1DOMParserConstructorImp.html">kjs::domparserconstructorimp</option>, <option value="classKJS_1_1DOMProcessingInstruction.html">kjs::domprocessinginstruction</option>, <option value="classKJS_1_1DOMRange.html">kjs::domrange</option>, <option value="classKJS_1_1DOMRect.html">kjs::domrect</option>, <option value="classKJS_1_1DOMRGBColor.html">kjs::domrgbcolor</option>, <option value="classKJS_1_1DOMStyleSheet.html">kjs::domstylesheet</option>, <option value="classKJS_1_1DOMStyleSheetList.html">kjs::domstylesheetlist</option>, <option value="classKJS_1_1DOMText.html">kjs::domtext</option>, <option value="classKJS_1_1DOMTextEvent.html">kjs::domtextevent</option>, <option value="classKJS_1_1DOMTreeWalker.html">kjs::domtreewalker</option>, <option value="classKJS_1_1DOMUIEvent.html">kjs::domuievent</option>, <option value="classKJS_1_1EvalMultiLineEdit.html">kjs::evalmultilineedit</option>, <option value="classKJS_1_1EventExceptionConstructor.html">kjs::eventexceptionconstructor</option>, <option value="classKJS_1_1HTMLCollection.html">kjs::htmlcollection</option>, <option value="classKJS_1_1HTMLDocument.html">kjs::htmldocument</option>, <option value="classKJS_1_1HTMLElement.html">kjs::htmlelement</option>, <option value="classKJS_1_1HTMLElementFunction.html">kjs::htmlelementfunction</option>, <option value="classKJS_1_1HTMLSelectCollection.html">kjs::htmlselectcollection</option>, <option value="classKJS_1_1ImageConstructorImp.html">kjs::imageconstructorimp</option>, <option value="classKJS_1_1JSEventListener.html">kjs::jseventlistener</option>, <option value="classKJS_1_1JSLazyEventListener.html">kjs::jslazyeventlistener</option>, <option value="classKJS_1_1JSNodeFilter.html">kjs::jsnodefilter</option>, <option value="classKJS_1_1KeyboardEventConstructor.html">kjs::keyboardeventconstructor</option>, <option value="classKJS_1_1KJSDebugWin.html">kjs::kjsdebugwin</option>, <option value="classKJS_1_1KJSErrorDialog.html">kjs::kjserrordialog</option>, <option value="classKJS_1_1Location.html">kjs::location</option>, <option value="classKJS_1_1MozillaSidebarExtension.html">kjs::mozillasidebarextension</option>, <option value="classKJS_1_1MutationEventConstructor.html">kjs::mutationeventconstructor</option>, <option value="classKJS_1_1Navigator.html">kjs::navigator</option>, <option value="classKJS_1_1NodeFilterConstructor.html">kjs::nodefilterconstructor</option>, <option value="classKJS_1_1OptionConstructorImp.html">kjs::optionconstructorimp</option>, <option value="classKJS_1_1RangeConstructor.html">kjs::rangeconstructor</option>, <option value="classKJS_1_1ScheduledAction.html">kjs::scheduledaction</option>, <option value="classKJS_1_1Screen.html">kjs::screen</option>, <option value="classKJS_1_1ScriptInterpreter.html">kjs::scriptinterpreter</option>, <option value="classKJS_1_1SourceDisplay.html">kjs::sourcedisplay</option>, <option value="classKJS_1_1SourceFile.html">kjs::sourcefile</option>, <option value="classKJS_1_1SourceFragment.html">kjs::sourcefragment</option>, <option value="classKJS_1_1Window.html">kjs::window</option>, <option value="classKJS_1_1WindowQObject.html">kjs::windowqobject</option>, <option value="classKJS_1_1XMLHttpRequest.html">kjs::xmlhttprequest</option>, <option value="classKJS_1_1XMLHttpRequestConstructorImp.html">kjs::xmlhttprequestconstructorimp</option>, <option value="classKJS_1_1XMLHttpRequestQObject.html">kjs::xmlhttprequestqobject</option>, <option value="classKJS_1_1XMLSerializer.html">kjs::xmlserializer</option>, <option value="classKJS_1_1XMLSerializerConstructorImp.html">kjs::xmlserializerconstructorimp</option>, <option value="classKJSCPUGuard.html">kjscpuguard</option>, <option value="classKJSErrorDlg.html">kjserrordlg</option>, <option value="classKJSProxy.html">kjsproxy</option>, <option value="classKMultiPart.html">kmultipart</option>, <option value="classKQEventUtil.html">kqeventutil</option>, <option value="classKXEventUtil.html">kxeventutil</option>, <option value="classPermissionDialog.html">permissiondialog</option>, </select> </form> </div> --> </div></div> <div class="menu_box"><h2>API Dox</h2> <div class="nav_list"> <ul> <li><a href="../../arts/html/index.html">arts</a></li><li><a href="../../dcop/html/index.html">dcop</a></li><li><a href="../../dnssd/html/index.html">dnssd</a></li><li><a href="../../interfaces/html/index.html">interfaces</a></li><li> <a href="../../interfaces/kimproxy/interface/html/index.html">interface</a></li><li> <a href="../../interfaces/kimproxy/library/html/index.html">library</a></li><li> <a href="../../interfaces/kspeech/html/index.html">kspeech</a></li><li> <a href="../../interfaces/ktexteditor/html/index.html">ktexteditor</a></li><li><a href="../../kabc/html/index.html">kabc</a></li><li><a href="../../kate/html/index.html">kate</a></li><li><a href="../../kcmshell/html/index.html">kcmshell</a></li><li><a href="../../kdecore/html/index.html">kdecore</a></li><li><a href="../../kded/html/index.html">kded</a></li><li><a href="../../kdefx/html/index.html">kdefx</a></li><li><a href="../../kdeprint/html/index.html">kdeprint</a></li><li><a href="../../kdesu/html/index.html">kdesu</a></li><li><a href="../../kdeui/html/index.html">kdeui</a></li><li><a href="../../kdoctools/html/index.html">kdoctools</a></li><li><a href="../../khtml/html/index.html">khtml</a></li><li><a href="../../kimgio/html/index.html">kimgio</a></li><li><a href="../../kinit/html/index.html">kinit</a></li><li><a href="../../kio/html/index.html">kio</a></li><li> <a href="../../kio/bookmarks/html/index.html">bookmarks</a></li><li> <a href="../../kio/httpfilter/html/index.html">httpfilter</a></li><li> <a href="../../kio/kfile/html/index.html">kfile</a></li><li> <a href="../../kio/kio/html/index.html">kio</a></li><li> <a href="../../kio/kioexec/html/index.html">kioexec</a></li><li> <a href="../../kio/kpasswdserver/html/index.html">kpasswdserver</a></li><li> <a href="../../kio/kssl/html/index.html">kssl</a></li><li><a href="../../kioslave/html/index.html">kioslave</a></li><li> <a href="../../kioslave/http/html/index.html">http</a></li><li><a href="../../kjs/html/index.html">kjs</a></li><li><a href="../../kmdi/html/index.html">kmdi</a></li><li> <a href="../../kmdi/kmdi/html/index.html">kmdi</a></li><li><a href="../../knewstuff/html/index.html">knewstuff</a></li><li><a href="../../kparts/html/index.html">kparts</a></li><li><a href="../../kresources/html/index.html">kresources</a></li><li><a href="../../kspell2/html/index.html">kspell2</a></li><li><a href="../../kunittest/html/index.html">kunittest</a></li><li><a href="../../kutils/html/index.html">kutils</a></li><li><a href="../../kwallet/html/index.html">kwallet</a></li><li><a href="../../libkmid/html/index.html">libkmid</a></li><li><a href="../../libkscreensaver/html/index.html">libkscreensaver</a></li> </ul></div></div> </td> </tr> </table> <span class="doNotDisplay"> <a href="http://www.kde.org/" accesskey="8">KDE Home</a> | <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> | <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a> </span> <div style="height: 8px"></div> <div id="footer"> <div id="footer_left"> Maintained by <a href="mailto:groot@kde.org">Adriaan de Groot</a> and <a href="mailto:wintert@kde.org">Allen Winter</a>. <br/> KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> | <a href="http://www.kde.org/contact/impressum.php">Legal</a> </div> <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div> </div> <!-- WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL BE BLOCKED INSTANTLY AND PERMANENTLY! <a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a> WARNING END --> </body> </html>