rev 3090 - trunk/packages/kdelibs/debian/patches
Christopher Martin
chrsmrtn at costa.debian.org
Tue Feb 7 01:01:40 UTC 2006
Author: chrsmrtn
Date: 2006-02-07 01:01:39 +0000 (Tue, 07 Feb 2006)
New Revision: 3090
Added:
trunk/packages/kdelibs/debian/patches/01_kdelibs_branch_r506549.diff
Log:
New kdelibs branch pull.
Added: trunk/packages/kdelibs/debian/patches/01_kdelibs_branch_r506549.diff
===================================================================
--- trunk/packages/kdelibs/debian/patches/01_kdelibs_branch_r506549.diff 2006-02-07 00:24:14 UTC (rev 3089)
+++ trunk/packages/kdelibs/debian/patches/01_kdelibs_branch_r506549.diff 2006-02-07 01:01:39 UTC (rev 3090)
@@ -0,0 +1,1304 @@
+#DPATCHLEVEL=0
+--- kate/part/katespell.cpp (revision 502693)
++++ kate/part/katespell.cpp (revision 506549)
+@@ -105,8 +105,8 @@
+ else if ( mt == "text/html" || mt == "text/xml" )
+ type = KSpell::HTML;
+
+- m_kspell = new KSpell( 0, i18n("Spellcheck"),
+- this, SLOT(ready(KSpell *)), 0, true, false, type );
++ m_kspell = new KSpell( m_view, i18n("Spellcheck"),
++ this, SLOT(ready(KSpell *)), 0, true, true, type );
+
+ connect( m_kspell, SIGNAL(death()),
+ this, SLOT(spellCleanDone()) );
+--- kate/data/pascal.xml (revision 502693)
++++ kate/data/pascal.xml (revision 506549)
+@@ -61,6 +61,7 @@
+ <item> true </item>
+ </list>
+ <list name="ISO/Delphi Extended">
++ <item> abstract </item>
+ <item> as </item>
+ <item> bindable </item>
+ <item> constructor </item>
+@@ -78,6 +79,7 @@
+ <item> on </item>
+ <item> only </item>
+ <item> otherwise </item>
++ <item> override </item>
+ <item> private </item>
+ <item> property </item>
+ <item> protected </item>
+@@ -89,6 +91,7 @@
+ <item> shr </item>
+ <item> threadvar </item>
+ <item> try </item>
++ <item> virtual </item>
+ </list>
+ <list name="types">
+ <item> Integer </item>
+--- mimetypes/application/mbox.desktop (revision 502693)
++++ mimetypes/application/mbox.desktop (revision 506549)
+@@ -17,6 +17,7 @@
+ Comment[is]=MBOX póstmappa
+ Comment[it]=Cartella di posta MBOX
+ Comment[lb]=MBOX Mail-Dossier
++Comment[nb]=Mbox e-postmappe
+ Comment[nds]=Mbox-Nettpostorner
+ Comment[nl]=MBOX-postvakmap
+ Comment[pl]=Folder poczty w formacie MBOX
+--- kio/kio/kdirwatch.cpp (revision 502693)
++++ kio/kio/kdirwatch.cpp (revision 506549)
+@@ -723,11 +723,7 @@
+
+ if ( ( e->wd = inotify_add_watch( m_inotify_fd,
+ QFile::encodeName( e->path ), mask) ) > 0 )
+- {
+- kdDebug(7001) << "** inotify watching " << e->path << " " << e->wd << endl;
+ return true;
+- } else
+- kdDebug(7001) << "** inotify failed " << e->path << " " << errno << endl;
+
+ if ( e->m_status == NonExistent ) {
+ addEntry(0, QDir::cleanDirPath(e->path+"/.."), e, true);
+--- kio/kfile/kpropertiesdialog.cpp (revision 502693)
++++ kio/kfile/kpropertiesdialog.cpp (revision 506549)
+@@ -1493,6 +1493,7 @@
+ bool hasExtendedACL;
+ KACL extendedACL;
+ KACL defaultACL;
++ bool fileSystemSupportsACLs;
+ };
+
+ #define UniOwner (S_IRUSR|S_IWUSR|S_IXUSR)
+@@ -1550,6 +1551,7 @@
+ d->hasExtendedACL = item->ACL().isExtended() || item->defaultACL().isValid();
+ d->extendedACL = item->ACL();
+ d->defaultACL = item->defaultACL();
++ d->fileSystemSupportsACLs = false;
+
+ if ( properties->items().count() > 1 )
+ {
+@@ -1849,6 +1851,22 @@
+ box->addStretch (10);
+ }
+
++#ifdef USE_POSIX_ACL
++static bool fileSystemSupportsACL( const QCString& pathCString )
++{
++ bool fileSystemSupportsACLs = false;
++#ifdef Q_OS_FREEBSD
++ struct statfs buf;
++ fileSystemSupportsACLs = ( statfs( pathCString.data(), &buf ) == 0 ) && ( buf.f_flags & MNT_ACLS );
++#else
++ fileSystemSupportsACLs =
++ getxattr( pathCString.data(), "system.posix_acl_access", NULL, 0 ) >= 0 || errno == ENODATA;
++#endif
++ return fileSystemSupportsACLs;
++}
++#endif
++
++
+ void KFilePermissionsPropsPlugin::slotShowAdvancedPermissions() {
+
+ bool isDir = (d->pmode == PermissionsOnlyDirs) || (d->pmode == PermissionsMixed);
+@@ -2053,20 +2071,13 @@
+
+ #ifdef USE_POSIX_ACL
+ KACLEditWidget *extendedACLs = 0;
+- bool fileSystemSupportsACLs = false;
+
+ // FIXME make it work with partial entries
+ if ( properties->items().count() == 1 ) {
+- QCString pathCString = QFile::encodeName( properties->item()->url().path() );
+-#ifdef Q_OS_FREEBSD
+- struct statfs buf;
+- fileSystemSupportsACLs = ( statfs( pathCString.data(), &buf ) == 0 ) && ( buf.f_flags & MNT_ACLS );
+-#else
+- fileSystemSupportsACLs =
+- getxattr( pathCString.data(), "system.posix_acl_access", NULL, 0 ) >= 0 || errno == ENODATA;
+-#endif
++ QCString pathCString = QFile::encodeName( properties->item()->url().path() );
++ d->fileSystemSupportsACLs = fileSystemSupportsACL( pathCString );
+ }
+- if ( fileSystemSupportsACLs ) {
++ if ( d->fileSystemSupportsACLs ) {
+ std::for_each( theNotSpecials.begin(), theNotSpecials.end(), std::mem_fun( &QWidget::hide ) );
+ extendedACLs = new KACLEditWidget( mainVBox );
+ if ( d->extendedACL.isValid() && d->extendedACL.isExtended() )
+@@ -2465,9 +2476,9 @@
+ if (files.count() > 0) {
+ job = KIO::chmod( files, orFilePermissions, ~andFilePermissions,
+ owner, group, false );
+- if ( ACLChange )
++ if ( ACLChange && d->fileSystemSupportsACLs )
+ job->addMetaData( "ACL_STRING", d->extendedACL.isValid()?d->extendedACL.asString():"ACL_DELETE" );
+- if ( defaultACLChange )
++ if ( defaultACLChange && d->fileSystemSupportsACLs )
+ job->addMetaData( "DEFAULT_ACL_STRING", d->defaultACL.isValid()?d->defaultACL.asString():"ACL_DELETE" );
+
+ connect( job, SIGNAL( result( KIO::Job * ) ),
+@@ -2481,9 +2492,9 @@
+ if (dirs.count() > 0) {
+ job = KIO::chmod( dirs, orDirPermissions, ~andDirPermissions,
+ owner, group, recursive );
+- if ( ACLChange )
++ if ( ACLChange && d->fileSystemSupportsACLs )
+ job->addMetaData( "ACL_STRING", d->extendedACL.isValid()?d->extendedACL.asString():"ACL_DELETE" );
+- if ( defaultACLChange )
++ if ( defaultACLChange && d->fileSystemSupportsACLs )
+ job->addMetaData( "DEFAULT_ACL_STRING", d->defaultACL.isValid()?d->defaultACL.asString():"ACL_DELETE" );
+
+ connect( job, SIGNAL( result( KIO::Job * ) ),
+@@ -3092,12 +3103,10 @@
+ return;
+ f.close();
+
+- KSimpleConfig config( path );
+- config.setDollarExpansion( false );
+- config.setDesktopGroup();
+- QString nameStr = config.readEntry( "Name" );
+- QString genNameStr = config.readEntry( "GenericName" );
+- QString commentStr = config.readEntry( "Comment" );
++ KDesktopFile config( path );
++ QString nameStr = config.readName();
++ QString genNameStr = config.readGenericName();
++ QString commentStr = config.readComment();
+ QString commandStr = config.readPathEntry( "Exec" );
+ if (commandStr.left(12) == "ksystraycmd ")
+ {
+@@ -3940,16 +3949,15 @@
+ return;
+ f.close();
+
+- KSimpleConfig config( path );
+- config.setDesktopGroup();
+- QString commentStr = config.readEntry( "Comment" );
+- QString genNameStr = config.readEntry( "GenericName" );
++ KDesktopFile config( path );
++ QString commentStr = config.readComment();
++ QString genNameStr = config.readGenericName();
+
+ QStringList selectedTypes = config.readListEntry( "ServiceTypes" );
+ // For compatibility with KDE 1.x
+ selectedTypes += config.readListEntry( "MimeType", ';' );
+
+- QString nameStr = config.readEntry( QString::fromLatin1("Name") );
++ QString nameStr = config.readName();
+ if ( nameStr.isEmpty() || d->m_kdesktopMode ) {
+ // We'll use the file name if no name is specified
+ // because we _need_ a Name for a valid file.
+--- kspell2/plugins/configure.in.in (revision 502693)
++++ kspell2/plugins/configure.in.in (revision 506549)
+@@ -16,6 +16,12 @@
+ AC_LANG_RESTORE
+ fi
+
++ aspell_datadir="/usr/lib/aspell"
++ if test -f "/usr/bin/pspell-config"; then
++ aspell_datadir=`/usr/bin/pspell-config --pkgdatadir`
++ fi
++
++ AC_DEFINE_UNQUOTED( ASPELL_DATADIR, ["$aspell_datadir"], [Define where aspell data dir is] )
+ AM_CONDITIONAL(include_aspell_plugin, test -n "$ac_cv_header_aspell_h" -a -n "$LIBASPELL")
+
+ AC_ARG_WITH(hspell,AC_HELP_STRING([--with-hspell],[Enable hspell support [default=check]]),[hspell_test="$withval"],[hspell_test="yes"])
+--- kdecore/kaboutdata.h (revision 502693)
++++ kdecore/kaboutdata.h (revision 506549)
+@@ -302,8 +302,8 @@
+ *
+ * For example:
+ * \code
+- * setTranslator(I18N_NOOP("_: NAME OF TRANSLATORS\\nYour names")
+- * ,I18N_NOOP("_: EMAIL OF TRANSLATORS\\nYour emails"));
++ * setTranslator(I18N_NOOP2("NAME OF TRANSLATORS","Your names")
++ * ,I18N_NOOP2("EMAIL OF TRANSLATORS","Your emails"));
+ * \endcode
+ *
+ * The translator can then translate this dummy text with his name
+--- kdecore/ktimezones.h (revision 502693)
++++ kdecore/ktimezones.h (revision 506549)
+@@ -26,6 +26,7 @@
+ #include <qmap.h>
+ #include <qstring.h>
+ #include <ksharedptr.h>
++
+ class KTimezoneDetails;
+ class KTimezoneDetailsPrivate;
+ class KTimezonePrivate;
+@@ -187,6 +188,9 @@
+ bool parse(KTimezoneDetails &dataReceiver) const;
+
+ private:
++ KTimezone(const KTimezone&);
++ KTimezone& operator=(const KTimezone&);
++
+ KSharedPtr<KTimezoneSource> m_db;
+ QString m_name;
+ QString m_countryCode;
+@@ -333,6 +337,9 @@
+ void add(KTimezone *zone);
+
+ private:
++ KTimezones(const KTimezones&);
++ KTimezones& operator=(const KTimezones&);
++
+ float convertCoordinate(const QString &coordinate);
+
+ QString m_zoneinfoDir;
+--- kdecore/kprocess.cpp (revision 502693)
++++ kdecore/kprocess.cpp (revision 506549)
+@@ -1005,6 +1005,10 @@
+ if (dup2(out[1], STDOUT_FILENO) < 0 ||
+ setsockopt(out[1], SOL_SOCKET, SO_LINGER, (char *)&so, sizeof(so)))
+ ok = 0;
++ if (communication & MergedStderr) {
++ if (dup2(out[1], STDERR_FILENO) < 0)
++ ok = 0;
++ }
+ }
+ if (d->usePty & Stderr) {
+ if (dup2(d->pty->slaveFd(), STDERR_FILENO) < 0) ok = 0;
+--- kdecore/kiconloader.cpp (revision 502693)
++++ kdecore/kiconloader.cpp (revision 506549)
+@@ -120,7 +120,6 @@
+
+ struct KIconLoaderPrivate
+ {
+- QStringList mThemeList;
+ QStringList mThemesInTree;
+ KIconGroup *mpGroups;
+ KIconThemeNode *mpThemeRoot;
+@@ -201,18 +200,6 @@
+ // successfully.
+ d->mpThemeRoot = 0L;
+
+- // Check installed themes.
+- d->mThemeList = KIconTheme::list();
+- if (!d->mThemeList.contains(KIconTheme::defaultThemeName()))
+- {
+- kdError(264) << "Error: standard icon theme"
+- << " \"" << KIconTheme::defaultThemeName() << "\" "
+- << " not found!" << endl;
+- d->mpGroups=0L;
+-
+- return;
+- }
+-
+ QString appname = _appname;
+ if (appname.isEmpty())
+ appname = KGlobal::instance()->instanceName();
+@@ -222,7 +209,17 @@
+ if (!def->isValid())
+ {
+ delete def;
++ // warn, as this is actually a small penalty hit
++ kdDebug(264) << "Couldn't find current icon theme, falling back to default." << endl;
+ def = new KIconTheme(KIconTheme::defaultThemeName(), appname);
++ if (!def->isValid())
++ {
++ kdError(264) << "Error: standard icon theme"
++ << " \"" << KIconTheme::defaultThemeName() << "\" "
++ << " not found!" << endl;
++ d->mpGroups=0L;
++ return;
++ }
+ }
+ d->mpThemeRoot = new KIconThemeNode(def);
+ d->links.append(d->mpThemeRoot);
+@@ -343,8 +340,7 @@
+
+ for (it=lst.begin(); it!=lst.end(); ++it)
+ {
+- if (!d->mThemeList.contains(*it) ||
+- ( d->mThemesInTree.contains(*it) && (*it) != "hicolor"))
++ if( d->mThemesInTree.contains(*it) && (*it) != "hicolor")
+ continue;
+ KIconTheme *theme = new KIconTheme(*it,appname);
+ if (!theme->isValid()) {
+--- kdecore/all_languages.desktop (revision 502693)
++++ kdecore/all_languages.desktop (revision 506549)
+@@ -7463,6 +7463,7 @@
+ Name[is]=RúmenÃa
+ Name[it]=Rom
+ Name[lb]=Romani
++Name[nb]=Romani
+ Name[nds]=Roomsch
+ Name[nl]=Roma
+ Name[pl]=Romski
+@@ -8415,6 +8416,7 @@
+ Name[is]=Serbnesk latÃna
+ Name[it]=Serbo latino
+ Name[lb]=Latäinescht Serbesch
++Name[nb]=Serbisk (latinsk)
+ Name[nds]=Serbsch (latiensch Schrift)
+ Name[nl]=Servisch Latijn
+ Name[pl]=Serbski ÅaciÅski
+@@ -10263,6 +10265,7 @@
+ Name[is]=KÃnverska (Hong Kong)
+ Name[it]=Cinese (Hong Kong)
+ Name[lb]=Chinesesch (Hong Kong)
++Name[nb]=Kinesisk (Hong kong)
+ Name[nds]=Chineesch (Hong Kong)
+ Name[nl]=Chinees (Hong Kong)
+ Name[pl]=ChiÅski (Hong Kong)
+--- kdecore/kaboutdata.cpp (revision 502693)
++++ kdecore/kaboutdata.cpp (revision 506549)
+@@ -274,8 +274,8 @@
+ {
+ delete[] d->mTranslatedProgramName;
+ d->mTranslatedProgramName = 0;
+- if( KGlobal::locale())
+- d->mTranslatedProgramName = qstrdup( i18n( mProgramName ).utf8());
++ if( KGlobal::locale() )
++ d->mTranslatedProgramName = qstrdup( programName().utf8());
+ }
+
+ QImage
+--- kdecore/kprocess.h (revision 502693)
++++ kdecore/kprocess.h (revision 506549)
+@@ -138,12 +138,23 @@
+ * If @p NoRead is specified in conjunction with @p Stdout,
+ * no data is actually read from @p Stdout but only
+ * the signal receivedStdout(int fd, int &len) is emitted.
++ *
++ * @p CTtyOnly tells setUsePty() to create a PTY for the process
++ * and make it the process' controlling TTY, but does not redirect
++ * any I/O channel to the PTY.
++ *
++ * If @p MergedStderr is specified in conjunction with @p Stdout,
++ * Stderr will be redirected onto the same file handle as Stdout,
++ * i.e., all error output will be signalled with receivedStdout().
++ * Don't specify @p Stderr if you specify @p MergedStderr.
+ */
+ enum Communication {
+ NoCommunication = 0,
+ Stdin = 1, Stdout = 2, Stderr = 4,
+ AllOutput = 6, All = 7,
+- NoRead
++ NoRead = 8,
++ CTtyOnly = NoRead,
++ MergedStderr = 16
+ };
+
+ /**
+@@ -540,9 +551,8 @@
+
+ /**
+ * Obtains the pty object used by this process. The return value is
+- * valid only after setUsePty() was used to associate at least one
+- * standard I/O stream to a pty. The pty is open only while the process
+- * is running.
++ * valid only after setUsePty() was used with a non-zero argument.
++ * The pty is open only while the process is running.
+ * @return a pointer to the pty object
+ * @since 3.2
+ */
+--- khtml/html/html_miscimpl.cpp (revision 502693)
++++ khtml/html/html_miscimpl.cpp (revision 506549)
+@@ -198,6 +198,9 @@
+ case ID_OBJECT:
+ case ID_SELECT:
+ case ID_TEXTAREA:
++ case ID_FRAME:
++ case ID_IFRAME:
++ case ID_FRAMESET:
+ checkName = true;
+ break;
+ default:
+--- khtml/html/html_formimpl.cpp (revision 502693)
++++ khtml/html/html_formimpl.cpp (revision 506549)
+@@ -2694,7 +2694,6 @@
+ setChanged(true);
+ }
+
+-
+ DOMString HTMLTextAreaElementImpl::defaultValue()
+ {
+ DOMString val = "";
+@@ -2749,6 +2748,60 @@
+ return true;
+ }
+
++//Mozilla extensions.
++long HTMLTextAreaElementImpl::selectionStart()
++{
++ if (m_render) {
++ RenderTextArea* renderArea = static_cast<RenderTextArea*>( m_render );
++ return renderArea->selectionStart();
++ }
++
++ return 0;
++}
++
++long HTMLTextAreaElementImpl::selectionEnd()
++{
++ if (m_render) {
++ RenderTextArea* renderArea = static_cast<RenderTextArea*>( m_render );
++ return renderArea->selectionEnd();
++ }
++
++ return 0;
++}
++
++void HTMLTextAreaElementImpl::setSelectionStart(long pos)
++{
++ if (m_render) {
++ RenderTextArea* renderArea = static_cast<RenderTextArea*>( m_render );
++ renderArea->setSelectionStart( pos );
++ }
++}
++
++void HTMLTextAreaElementImpl::setSelectionEnd(long pos)
++{
++ if (m_render) {
++ RenderTextArea* renderArea = static_cast<RenderTextArea*>( m_render );
++ renderArea->setSelectionEnd( pos );
++ }
++}
++
++long HTMLTextAreaElementImpl::textLength()
++{
++ //First, get the value. This is like ::value, only pure.
++ DOMString val = m_value;
++ if (m_dirtyvalue) {
++ if ( m_render && m_initialized ) {
++ RenderTextArea* renderArea = static_cast<RenderTextArea*>( m_render );
++ val = renderArea->text();
++ } else {
++ val = defaultValue();
++ }
++ }
++
++ //now we can get the length.
++ return val.length();
++}
++
+ // -------------------------------------------------------------------------
+
+ HTMLIsIndexElementImpl::HTMLIsIndexElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f)
+--- khtml/html/html_baseimpl.cpp (revision 502693)
++++ khtml/html/html_baseimpl.cpp (revision 506549)
+@@ -418,6 +418,18 @@
+ return 0;
+ }
+
++KHTMLPart* HTMLFrameElementImpl::contentPart() const
++{
++ if ( !m_render ) return 0;
++
++ RenderPart* render = static_cast<RenderPart*>( m_render );
++
++ if(render->widget() && ::qt_cast<KHTMLView*>( render->widget()) )
++ return static_cast<KHTMLView*>( render->widget() )->part();
++
++ return 0;
++}
++
+ // -------------------------------------------------------------------------
+
+ HTMLFrameSetElementImpl::HTMLFrameSetElementImpl(DocumentPtr *doc)
+--- khtml/html/html_formimpl.h (revision 502693)
++++ khtml/html/html_formimpl.h (revision 506549)
+@@ -555,6 +555,12 @@
+ virtual bool isEditable();
+ void setUnsubmittedFormChange(bool unsubmitted) { m_unsubmittedFormChange = unsubmitted; }
+
++ //Mozilla extensions.
++ long selectionStart();
++ long selectionEnd();
++ void setSelectionStart(long pos);
++ void setSelectionEnd (long pos);
++ long textLength();
+ protected:
+ int m_rows;
+ int m_cols;
+--- khtml/html/html_baseimpl.h (revision 502693)
++++ khtml/html/html_baseimpl.h (revision 506549)
+@@ -34,6 +34,7 @@
+ #include <qscrollview.h>
+
+ class KHTMLView;
++class KHTMLPart;
+
+ namespace khtml {
+ class RenderFrameSet;
+@@ -95,6 +96,7 @@
+ virtual void setFocus(bool);
+
+ DocumentImpl* contentDocument() const;
++ KHTMLPart* contentPart() const;
+
+ DOMString url;
+ DOMString name;
+--- khtml/ecma/kjs_html.h (revision 502693)
++++ khtml/ecma/kjs_html.h (revision 506549)
+@@ -99,7 +99,8 @@
+ TextAreaAccessKey, TextAreaName, TextAreaDefaultValue, TextAreaSelect,
+ TextAreaCols, TextAreaDisabled, TextAreaForm, TextAreaType,
+ TextAreaTabIndex, TextAreaReadOnly, TextAreaRows, TextAreaValue,
+- TextAreaBlur, TextAreaFocus, ButtonBlur, ButtonFocus, ButtonForm, ButtonTabIndex, ButtonName,
++ TextAreaBlur, TextAreaFocus, TextAreaSelectionStart, TextAreaSelectionEnd,
++ TextAreaTextLength, ButtonBlur, ButtonFocus, ButtonForm, ButtonTabIndex, ButtonName,
+ ButtonDisabled, ButtonAccessKey, ButtonType, ButtonValue, LabelHtmlFor,
+ LabelForm, LabelAccessKey, FieldSetForm, LegendForm, LegendAccessKey,
+ LegendAlign, UListType, UListCompact, OListStart, OListCompact,
+--- khtml/ecma/kjs_html.cpp (revision 502693)
++++ khtml/ecma/kjs_html.cpp (revision 506549)
+@@ -779,6 +779,9 @@
+ tabIndex KJS::HTMLElement::TextAreaTabIndex DontDelete
+ type KJS::HTMLElement::TextAreaType DontDelete|ReadOnly
+ value KJS::HTMLElement::TextAreaValue DontDelete
++ selectionStart KJS::HTMLElement::TextAreaSelectionStart DontDelete
++ selectionEnd KJS::HTMLElement::TextAreaSelectionEnd DontDelete
++ textLength KJS::HTMLElement::TextAreaTextLength DontDelete|ReadOnly
+ blur KJS::HTMLElement::TextAreaBlur DontDelete|Function 0
+ focus KJS::HTMLElement::TextAreaFocus DontDelete|Function 0
+ select KJS::HTMLElement::TextAreaSelect DontDelete|Function 0
+@@ -1369,6 +1372,9 @@
+ case TextAreaTabIndex: return Number(textarea.tabIndex());
+ case TextAreaType: return String(textarea.type());
+ case TextAreaValue: return String(textarea.value());
++ case TextAreaSelectionStart: return Number(textarea.selectionStart());
++ case TextAreaSelectionEnd: return Number(textarea.selectionEnd());
++ case TextAreaTextLength: return Number(textarea.textLength());
+ }
+ }
+ break;
+@@ -1841,9 +1847,9 @@
+ case FrameContentDocument: return checkNodeSecurity(exec,frameElement.contentDocument()) ?
+ getDOMNode(exec, frameElement.contentDocument()) : Undefined();
+ case FrameContentWindow: {
+- KHTMLView *view = static_cast<DOM::DocumentImpl*>(frameElement.contentDocument().handle())->view();
+- if (view && view->part())
+- return Value(Window::retrieveWindow(view->part()));
++ KHTMLPart* part = static_cast<DOM::HTMLFrameElementImpl*>(frameElement.handle())->contentPart();
++ if (part)
++ return Value(Window::retrieveWindow(part));
+ else
+ return Undefined();
+ }
+@@ -1866,13 +1872,9 @@
+ case IFrameContentDocument: return checkNodeSecurity(exec,iFrame.contentDocument()) ?
+ getDOMNode(exec, iFrame.contentDocument()) : Undefined();
+ case IFrameContentWindow: {
+- DOM::DocumentImpl* contentDoc = static_cast<DOM::DocumentImpl*>(iFrame.contentDocument().handle());
+- if (!contentDoc)
+- return Undefined();
+-
+- KHTMLView *view = contentDoc->view();
+- if (view && view->part())
+- return Value(Window::retrieveWindow(view->part()));
++ KHTMLPart* part = static_cast<DOM::HTMLIFrameElementImpl*>(iFrame.handle())->contentPart();
++ if (part)
++ return Value(Window::retrieveWindow(part));
+ else
+ return Undefined();
+ }
+@@ -2593,6 +2595,8 @@
+ case TextAreaTabIndex: { textarea.setTabIndex(value.toInteger(exec)); return; }
+ // read-only: type
+ case TextAreaValue: { textarea.setValue(str); return; }
++ case TextAreaSelectionStart: { textarea.setSelectionStart(value.toInteger(exec)); return; }
++ case TextAreaSelectionEnd: { textarea.setSelectionEnd (value.toInteger(exec)); return; }
+ }
+ }
+ break;
+--- khtml/ecma/kjs_window.cpp (revision 502693)
++++ khtml/ecma/kjs_window.cpp (revision 506549)
+@@ -2147,6 +2147,26 @@
+ return Window::retrieve(frame);
+ }
+
++ // Fun IE quirk: name lookup in there is actually done by document.all
++ // hence, it can find non-frame things (and even let them hide frame ones!)
++ // We don't quite do that, but do this as a fallback.
++ DOM::DocumentImpl* doc = static_cast<DOM::DocumentImpl*>(part->document().handle());
++ DOM::HTMLCollectionImpl docuAll(doc, DOM::HTMLCollectionImpl::DOC_ALL);
++ DOM::NodeImpl* node = docuAll.namedItem(p.string());
++ if (node) {
++ if (node->id() == ID_FRAME || node->id() == ID_IFRAME) {
++ //Return the Window object.
++ KHTMLPart* part = static_cast<DOM::HTMLFrameElementImpl*>(node)->contentPart();
++ if (part)
++ return Value(Window::retrieveWindow(part));
++ else
++ return Undefined();
++ } else {
++ //Just a regular node..
++ return getDOMNode(exec, node);
++ }
++ }
++
+ return ObjectImp::get(exec, p);
+ }
+
+--- khtml/rendering/render_form.h (revision 502693)
++++ khtml/rendering/render_form.h (revision 506549)
+@@ -472,6 +472,10 @@
+
+ void select();
+
++ long selectionStart();
++ long selectionEnd();
++ void setSelectionStart(long pos);
++ void setSelectionEnd(long pos);
+ protected slots:
+ void slotTextChanged();
+
+@@ -482,6 +486,18 @@
+ virtual bool canHaveBorder() const { return true; }
+
+ bool scrollbarsStyled;
++private:
++ //Convert para, index -> offset
++ long computeCharOffset(int para, int index);
++
++ //Convert offset -> para, index
++ void computeParagraphAndIndex(long index, int* para, int* index);
++
++ //Helper for doing the conversion..
++ enum Mode { ParaLength, //Returns the length of the entire paragraph
++ ParaPortionLength, //Return length of paragraph portion set by threshold
++ ParaPortionOffset }; //Return offset that matches the length threshold.
++ int queryParagraphInfo(int para, Mode m, int param = -1);
+ };
+
+ // -------------------------------------------------------------------------
+--- khtml/rendering/table_layout.cpp (revision 502693)
++++ khtml/rendering/table_layout.cpp (revision 506549)
+@@ -766,7 +766,7 @@
+ w = kMax( w, cminw*layoutStruct[pos].effWidth.value()/totalPercent );
+ w = kMin(layoutStruct[pos].effMinWidth+(cMinWidth-minw), w);
+ #ifdef DEBUG_LAYOUT
+- qDebug(" col %d: min=%d, effMin=%d, new=%d", pos, layoutStruct[pos].effMinWidth, layoutStruct[pos].effMinWidth, w
++ qDebug(" col %d: min=%d, effMin=%d, new=%d", pos, layoutStruct[pos].effMinWidth, layoutStruct[pos].effMinWidth, w );
+ #endif
+ maxw -= layoutStruct[pos].effMaxWidth;
+ minw -= layoutStruct[pos].effMinWidth;
+--- khtml/rendering/render_form.cpp (revision 502693)
++++ khtml/rendering/render_form.cpp (revision 506549)
+@@ -4,6 +4,7 @@
+ * Copyright (C) 1999 Lars Knoll (knoll at kde.org)
+ * (C) 1999 Antti Koivisto (koivisto at kde.org)
+ * (C) 2000 Dirk Mueller (mueller at kde.org)
++ * (C) 2006 Maksim Orlovich (maksim at kde.org)
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+@@ -1628,7 +1629,7 @@
+ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
+ w->setReadOnly(element()->readOnly());
+ QString elementText = element()->value().string();
+- if ( elementText != w->text() )
++ if ( elementText != text() )
+ {
+ w->blockSignals(true);
+ int line, col;
+@@ -1693,10 +1694,11 @@
+ if(element()->wrap() == DOM::HTMLTextAreaElementImpl::ta_Physical) {
+ // yeah, QTextEdit has no accessor for getting the visually wrapped text
+ for (int p=0; p < w->paragraphs(); ++p) {
+- int pl = w->paragraphLength(p);
+ int ll = 0;
+ int lindex = w->lineOfChar(p, 0);
+ QString paragraphText = w->text(p);
++ int pl = w->paragraphLength(p);
++ paragraphText = paragraphText.left(pl); //Snip invented space.
+ for (int l = 0; l < pl; ++l) {
+ if (lindex != w->lineOfChar(p, l)) {
+ paragraphText.insert(l+ll++, QString::fromLatin1("\n"));
+@@ -1714,7 +1716,98 @@
+ return expandLF(txt);
+ }
+
++static int expandedCnt(unsigned short code)
++{
++ if (code == '\n')
++ return 2;
++ else if (code == '\r')
++ return 0;
++ else
++ return 1;
++}
+
++int RenderTextArea::queryParagraphInfo(int para, Mode m, int param) {
++ /* We have to be a bit careful here, as we need to match up the positions
++ to what our value returns here*/
++ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
++ int length = 0;
++
++ bool physWrap = element()->wrap() == DOM::HTMLTextAreaElementImpl::ta_Physical;
++
++ QString paragraphText = w->text(para);
++ int pl = w->paragraphLength(para);
++ if (m == ParaPortionLength)
++ pl = param;
++
++ if (physWrap) {
++ //Go through all the chars of paragraph, and count line changes, chars, etc.
++ int lindex = w->lineOfChar(para, 0);
++ for (int c = 0; c < pl; ++c) {
++ if (lindex != w->lineOfChar(para, c)) {
++ length += 2;
++ lindex = w->lineOfChar(para, c);
++ }
++ length += expandedCnt(paragraphText.at(c).unicode());
++ if (m == ParaPortionOffset && length > param)
++ return c;
++ }
++ } else {
++ //Make sure to count the LF, CR as appropriate..
++ for (int c = 0; c < pl; ++c) {
++ length += expandedCnt(paragraphText.at(c).unicode());
++ if (m == ParaPortionOffset && length > param)
++ return c;
++ }
++ }
++ if (m == ParaPortionOffset)
++ return pl;
++ return length;
++}
++
++long RenderTextArea::computeCharOffset(int para, int index) {
++ if (para < 0)
++ return 0;
++
++ long pos = 0;
++ for (int cp = 0; cp < para; ++cp)
++ pos += queryParagraphInfo(cp, ParaLength) + 2;
++
++ if (index >= 0)
++ pos += queryParagraphInfo(para, ParaPortionLength, index);
++ return pos;
++}
++
++void RenderTextArea::computeParagraphAndIndex(long offset, int* para, int* index) {
++ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
++
++ if (!w->paragraphs()) {
++ *para = -1;
++ *index = -1;
++ return;
++ }
++
++ //Find the paragraph that contains us..
++ int containingPar = 0;
++ long endPos = 0;
++ long startPos = 0;
++ for (int p = 0; p < w->paragraphs(); ++p) {
++ int len = queryParagraphInfo(p, ParaLength) + 2;
++ endPos += len;
++ if (endPos > offset) {
++ containingPar = p;
++ break;
++ }
++ startPos += len;
++ }
++
++ *para = containingPar;
++
++ //Now, scan within the paragraph to find the position..
++ long localOffset = offset - startPos;
++
++ *index = queryParagraphInfo(containingPar, ParaPortionOffset, localOffset);
++}
++
+ void RenderTextArea::highLightWord( unsigned int length, unsigned int pos )
+ {
+ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
+@@ -1735,6 +1828,49 @@
+ static_cast<TextAreaWidget *>(m_widget)->selectAll();
+ }
+
++long RenderTextArea::selectionStart()
++{
++ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
++ int para, index, dummy1, dummy2;
++ w->getSelection(¶, &index, &dummy1, &dummy2);
++ if (para == -1 || index == -1)
++ w->getCursorPosition(¶, &index);
++
++ return computeCharOffset(para, index);
++}
++
++long RenderTextArea::selectionEnd()
++{
++ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
++ int para, index, dummy1, dummy2;
++ w->getSelection(&dummy1, &dummy2, ¶, &index);
++ if (para == -1 || index == -1)
++ w->getCursorPosition(¶, &index);
++
++ return computeCharOffset(para, index);
++}
++
++void RenderTextArea::setSelectionStart(long offset) {
++ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
++ int fromPara, fromIndex, toPara, toIndex;
++ w->getSelection(&fromPara, &fromIndex, &toPara, &toIndex);
++ computeParagraphAndIndex(offset, &fromPara, &fromIndex);
++ if (toPara == -1 || toIndex == -1) {
++ toPara = fromPara;
++ toIndex = fromIndex;
++ }
++ w->setSelection(fromPara, fromIndex, toPara, toIndex);
++}
++
++void RenderTextArea::setSelectionEnd(long offset) {
++ TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
++ int fromPara, fromIndex, toPara, toIndex;
++ w->getSelection(&fromPara, &fromIndex, &toPara, &toIndex);
++ computeParagraphAndIndex(offset, &toPara, &toIndex);
++ w->setSelection(fromPara, fromIndex, toPara, toIndex);
++}
++
++
+ // ---------------------------------------------------------------------------
+
+ #include "render_form.moc"
+--- khtml/rendering/render_object.cpp (revision 502693)
++++ khtml/rendering/render_object.cpp (revision 506549)
+@@ -1149,6 +1149,11 @@
+ return ts << "at (" << r.x() << "," << r.y() << ") size " << r.width() << "x" << r.height();
+ }
+
++//A bit like getTagName, but handles XML, too.
++static QString lookupTagName(NodeImpl* node) {
++ return node->getDocument()->getName(NodeImpl::ElementId, node->id()).string();
++}
++
+ void RenderObject::dump(QTextStream &ts, const QString &ind) const
+ {
+ if ( !layer() )
+@@ -1161,13 +1166,13 @@
+ }
+
+ if (element()) {
+- QString tagName(getTagName(element()->id()));
++ QString tagName(lookupTagName(element()));
+ if (!tagName.isEmpty()) {
+ ts << " {" << tagName << "}";
+ }
+ } else if (isPseudoAnonymous() && style() && style()->styleType() != RenderStyle::NOPSEUDO) {
+ QString pseudo;
+- QString tagName(getTagName(node()->id()));
++ QString tagName(lookupTagName(node()));
+ switch (style()->styleType()) {
+ case RenderStyle::FIRST_LETTER:
+ pseudo = ":first-letter"; break;
+--- khtml/dom/html_form.h (revision 502693)
++++ khtml/dom/html_form.h (revision 506549)
+@@ -21,7 +21,7 @@
+ * This file includes excerpts from the Document Object Model (DOM)
+ * Level 1 Specification (Recommendation)
+ * http://www.w3.org/TR/REC-DOM-Level-1/
+- * Copyright © World Wide Web Consortium , (Massachusetts Institute of
++ * Copyright © World Wide Web Consortium , (Massachusetts Institute of
+ * Technology , Institut National de Recherche en Informatique et en
+ * Automatique , Keio University ). All Rights Reserved.
+ *
+@@ -1155,6 +1155,44 @@
+ * Select the contents of the \c TEXTAREA .
+ */
+ void select ( );
++
++ /**
++ * Returns the character offset of beginning of selection, or if none,
++ * the cursor position.
++ * NOTE: this method is not part of the DOM, but a Mozilla extension
++ * @since 3.5.2
++ */
++ long selectionStart();
++
++ /**
++ * Move the beginning of the selection to the given offset in text
++ * NOTE: this method is not part of the DOM, but a Mozilla extension
++ * @since 3.5.2
++ */
++ void setSelectionStart(long offset);
++
++ /**
++ * Returns the character offset of end of selection, or if none,
++ * the cursor position.
++ * NOTE: this method is not part of the DOM, but a Mozilla extension
++ * @since 3.5.2
++ */
++ long selectionEnd();
++
++ /**
++ * Move the end of the selection (and the cursor) to the given offset in text
++ * NOTE: this method is not part of the DOM, but a Mozilla extension
++ * @since 3.5.2
++ */
++ void setSelectionEnd(long offset);
++
++
++ /**
++ * Returns the length of the text.
++ * NOTE: this method is not part of the DOM, but a Mozilla extension
++ * @since 3.5.2
++ */
++ long textLength();
+ };
+
+ // --------------------------------------------------------------------------
+--- khtml/dom/html_form.cpp (revision 502693)
++++ khtml/dom/html_form.cpp (revision 506549)
+@@ -1065,6 +1065,40 @@
+ ((HTMLTextAreaElementImpl *)impl)->select( );
+ }
+
++long HTMLTextAreaElement::selectionStart()
++{
++ if (impl)
++ return ((HTMLTextAreaElementImpl *)impl)->selectionStart( );
++ return 0;
++}
++
++long HTMLTextAreaElement::selectionEnd()
++{
++ if (impl)
++ return ((HTMLTextAreaElementImpl *)impl)->selectionEnd( );
++ return 0;
++}
++
++long HTMLTextAreaElement::textLength()
++{
++ if (impl)
++ return ((HTMLTextAreaElementImpl *)impl)->textLength( );
++ return 0;
++}
++
++void HTMLTextAreaElement::setSelectionStart(long pos)
++{
++ if (impl)
++ ((HTMLTextAreaElementImpl *)impl)->setSelectionStart( pos );
++}
++
++void HTMLTextAreaElement::setSelectionEnd(long pos)
++{
++ if (impl)
++ ((HTMLTextAreaElementImpl *)impl)->setSelectionEnd( pos );
++}
++
++
+ // --------------------------------------------------------------------------
+
+ HTMLOptionElement::HTMLOptionElement() : HTMLElement()
+--- khtml/java/org/kde/kjas/server/KJASSecurityManager.java (revision 502693)
++++ khtml/java/org/kde/kjas/server/KJASSecurityManager.java (revision 506549)
+@@ -64,7 +64,7 @@
+ super.checkPermission(perm);
+ } catch (SecurityException se) {
+ // Don't annoy users with these
+- if (perm instanceof java.lang.RuntimePermission ||
++ if (/*perm instanceof java.lang.RuntimePermission || */
+ perm instanceof java.awt.AWTPermission)
+ throw se;
+
+--- khtml/xml/dom2_eventsimpl.cpp (revision 502693)
++++ khtml/xml/dom2_eventsimpl.cpp (revision 506549)
+@@ -526,6 +526,7 @@
+ /* Mapping between special Qt keycodes and virtual DOM codes */
+ IDTranslator<unsigned, unsigned, unsigned>::Info virtKeyToQtKeyTable[] =
+ {
++ {KeyEventBaseImpl::DOM_VK_BACK_SPACE, Qt::Key_Backspace},
+ {KeyEventBaseImpl::DOM_VK_ENTER, Qt::Key_Enter},
+ {KeyEventBaseImpl::DOM_VK_ENTER, Qt::Key_Return},
+ {KeyEventBaseImpl::DOM_VK_NUM_LOCK, Qt::Key_NumLock},
+--- khtml/xml/dom_docimpl.cpp (revision 502693)
++++ khtml/xml/dom_docimpl.cpp (revision 506549)
+@@ -1794,15 +1794,17 @@
+ // in the document.
+ cs = (htmlMode() == XHtml) || (_nsURI && _type != NodeImpl::AttributeId);
+
+- if (!nsid) {
+- // First see if it's a HTML element name
+- // xhtml is lower case - case sensitive, easy to implement
+- if ( cs && (id = lookup(n.string().ascii(), _name->l)) )
+- return id;
+- // compatibility: upper case - case insensitive
+- if ( !cs && (id = lookup(n.string().lower().ascii(), _name->l )) )
+- return id;
++ // First see if it's a HTML element name
++ // xhtml is lower case - case sensitive, easy to implement
++ if ( cs && (id = lookup(n.string().ascii(), _name->l)) ) {
++ map->addAlias(_prefix, _name, cs, id);
++ return nsid + id;
+ }
++ // compatibility: upper case - case insensitive
++ if ( !cs && (id = lookup(n.string().lower().ascii(), _name->l )) ) {
++ map->addAlias(_prefix, _name, cs, id);
++ return nsid + id;
++ }
+ }
+
+ // Look in the names array for the name
+@@ -1811,8 +1813,9 @@
+
+ if (!_nsURI) {
+ id = (NodeImpl::Id)(long) map->ids.find( name );
+- if (!id && _type != NodeImpl::NamespaceId)
++ if (!id && _type != NodeImpl::NamespaceId) {
+ id = (NodeImpl::Id)(long) map->ids.find( "aliases: " + name );
++ }
+ } else {
+ id = (NodeImpl::Id)(long) map->ids.find( name );
+ if (!readonly && id && _prefix && _prefix->l) {
+@@ -1843,18 +1846,8 @@
+ map->ids.insert( name, (void*)cid );
+
+ // and register an alias if needed for DOM1 methods compatibility
+- if(_prefix && _prefix->l) {
+- QConstString px( _prefix->s, _prefix->l );
+- QString qn("aliases: " + (cs ? px.string() : px.string().upper()) + ":" + name);
+- if (!map->ids.find( qn )) {
+- map->ids.insert( qn, (void*)cid );
+- }
+- }
++ map->addAlias(_prefix, _name, cs, cid);
+
+- if (map->ids.size() == map->ids.count() && map->ids.size() != khtml_MaxSeed)
+- map->ids.resize( khtml::nextSeed(map->ids.count()) );
+- if (map->names.size() == map->names.count() && map->names.size() != khtml_MaxSeed)
+- map->names.resize( khtml::nextSeed(map->names.count()) );
+ return nsid + cid;
+ }
+
+@@ -1889,8 +1882,9 @@
+ return DOMString();;
+ }
+ _id = _id & NodeImpl_IdLocalMask;
+- if (_id >= map->idStart)
++ if (_id >= map->idStart) {
+ return map->names[_id];
++ }
+ else if (lookup) {
+ // ### put them in a cache
+ if (hasNS)
+--- khtml/xml/dom_docimpl.h (revision 502693)
++++ khtml/xml/dom_docimpl.h (revision 506549)
+@@ -31,6 +31,7 @@
+ #include "xml/dom2_traversalimpl.h"
+ #include "misc/shared.h"
+ #include "misc/loader.h"
++#include "misc/seed.h"
+
+ #include <qstringlist.h>
+ #include <qptrlist.h>
+@@ -583,6 +584,27 @@
+ unsigned short count;
+ QIntDict<DOM::DOMStringImpl> names;
+ QDict<void> ids;
++
++ void expandIfNeeded() {
++ if (ids.size() <= ids.count() && ids.size() != khtml_MaxSeed)
++ ids.resize( khtml::nextSeed(ids.count()) );
++ if (names.size() <= names.count() && names.size() != khtml_MaxSeed)
++ names.resize( khtml::nextSeed(names.count()) );
++ }
++
++ void addAlias(DOMStringImpl* _prefix, DOMStringImpl* _name, bool cs, NodeImpl::Id id) {
++ if(_prefix && _prefix->l) {
++ QConstString n(_name->s, _name->l);
++ QConstString px( _prefix->s, _prefix->l );
++ QString name = cs ? n.string() : n.string().upper();
++ QString qn("aliases: " + (cs ? px.string() : px.string().upper()) + ":" + name);
++ if (!ids.find( qn )) {
++ ids.insert( qn, (void*)id );
++ }
++ }
++ expandIfNeeded();
++ }
++
+ };
+
+ IdNameMapping *m_attrMap;
+--- kjs/configure.in.in (revision 502693)
++++ kjs/configure.in.in (revision 506549)
+@@ -38,7 +38,7 @@
+ ac_LDFLAGS_save="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $all_libraries"
+ AC_TRY_LINK(
+- [#include <pcreposix.h>],
++ [#include <pcre.h>],
+ [regfree(0);],
+ [ac_cv_have_pcreposix="yes"],
+ [ac_cv_have_pcreposix="no"]
+--- kdoctools/customization/pl/user.entities (revision 502693)
++++ kdoctools/customization/pl/user.entities (revision 506549)
+@@ -131,22 +131,23 @@
+
+ <!ENTITY kmail-mianownik '<application>Kmail</application>'>
+ <!ENTITY kmail-dopelniacz '<application>Kmaila</application>'>
+-<!ENTITY kmail-celownik '<application>Kmail-owi</application>'>
++<!ENTITY kmail-celownik '<application>Kmailowi</application>'>
+ <!ENTITY kmail-biernik '<application>Kmaila</application>'>
+-<!ENTITY kmail-miejscownik '<application>Kmail-u</application>'>
++<!ENTITY kmail-narzednik '<application>Kmailem</application>'>
++<!ENTITY kmail-miejscownik '<application>Kmailu</application>'>
+
+ <!ENTITY kmenu 'Menu K'>
+ <!ENTITY kmenu-mianownik 'Menu K'>
+ <!ENTITY kmenu-dopelniacz '&kmenu-mianownik;'>
+ <!ENTITY kmenu-celownik '&kmenu-mianownik;'>
+ <!ENTITY kmenu-biernik '&kmenu-mianownik;'>
+-<!ENTITY kmenu-biernik '&kmenu-mianownik;'>
+ <!ENTITY kmenu-miejscownik '&kmenu-mianownik;'>
+
+ <!ENTITY knode-mianownik '<application>Knode</application>'>
+ <!ENTITY knode-dopelniacz '<application>Knode</application>'>
+ <!ENTITY knode-celownik '<application>Knode</application>'>
+ <!ENTITY knode-biernik '<application>Knode</application>'>
++<!ENTITY knode-narzednik '<application>Knode</application>'>
+ <!ENTITY knode-miejscownik '<application>Knode</application>'>
+
+ <!ENTITY konqueror-mianownik '<application>Konqueror</application>'>
+@@ -227,11 +228,11 @@
+ <!ENTITY OS-miejscownik 'systemie operacyjnym'>
+
+ <!ENTITY Sendmail-mianownik '<application>Sendmail</application>'>
+-<!ENTITY Sendmail-dopelniacz '<application>Sendmail-a</application>'>
+-<!ENTITY Sendmail-celownik '<application>Sendmail-owi</application>'>
+-<!ENTITY Sendmail-biernik '<application>Sendmail-a</application>'>
+-<!ENTITY Sendmail-narzednik '<application>Sendmail-em</application>'>
+-<!ENTITY Sendmail-miejscownik '<application>Sendmail-u/application>'>
++<!ENTITY Sendmail-dopelniacz '<application>Sendmaila</application>'>
++<!ENTITY Sendmail-celownik '<application>Sendmailowi</application>'>
++<!ENTITY Sendmail-biernik '<application>Sendmaila</application>'>
++<!ENTITY Sendmail-narzednik '<application>Sendmailem</application>'>
++<!ENTITY Sendmail-miejscownik '<application>Sendmailu/application>'>
+
+ <!ENTITY Shift "<keycap>Shift</keycap>">
+ <!ENTITY Tab "<keycap>Tab</keycap>">
+--- kdoctools/customization/es/user.entities (revision 502693)
++++ kdoctools/customization/es/user.entities (revision 506549)
+@@ -33,6 +33,7 @@
+ <!ENTITY konversation "<application>Konversation</application>">
+ <!ENTITY kubuntu "<application>Kubuntu</application>">
+ <!ENTITY kmenu "menú <guimenu>K</guimenu>">
++<!ENTITY liloconfig "Configuración de LILO">
+ <!ENTITY LMB "<mousebutton>botón izquierdo</mousebutton>">
+ <!ENTITY MMB "<mousebutton>botón central</mousebutton>">
+ <!ENTITY OS "Sistema operativo">
+--- kparts/browserrun.cpp (revision 502693)
++++ kparts/browserrun.cpp (revision 506549)
+@@ -465,10 +465,8 @@
+ * error = int kio error code, errText = QString error text from kio
+ * The sub-url is the URL that we were trying to open.
+ */
+- QString errText( errorText );
+- errText.replace( '#', "%23" ); // a # in the error string would really muck things up...
+ KURL newURL(QString("error:/?error=%1&errText=%2")
+- .arg( error ).arg( errText ), 106 );
++ .arg( error ).arg( KURL::encode_string(errorText) ), 106 );
+ m_strURL.setPass( QString::null ); // don't put the password in the error URL
+
+ KURL::List lst;
+--- kded/khostname.cpp (revision 502693)
++++ kded/khostname.cpp (revision 506549)
+@@ -364,7 +364,9 @@
+
+ KHostName hn;
+
+- hn.changeX();
++ if(!getenv("XAUTHLOCALHOSTNAME"))
++ hn.changeX();
++
+ hn.changeDcop();
+ hn.changeStdDirs("socket");
+ hn.changeStdDirs("tmp");
+--- kdeprint/specials.desktop (revision 502693)
++++ kdeprint/specials.desktop (revision 506549)
+@@ -876,7 +876,7 @@
+ Name[el]=ÎÏοÏÏολή αÏÏείοÏ
PDF μÎÏÏ mail
+ Name[eo]=Sendu PDF-dosieron
+ Name[es]=Enviar archivo PDF por correo
+-Name[et]=PDF-faili meiliga saatmine
++Name[et]=PDF-faili kirjaga saatmine
+ Name[eu]=Bidali PDF fitxategia
+ Name[fi]=Lähetä PDF-tiedosto sähköpostilla
+ Name[fr]=Pièce jointe PDF
+--- kdeui/kurllabel.cpp (revision 502693)
++++ kdeui/kurllabel.cpp (revision 506549)
+@@ -405,6 +405,8 @@
+ QRect KURLLabel::activeRect() const
+ {
+ QRect r( contentsRect() );
++ if (text().isEmpty() || (!d->MarginAltered && sizePolicy() == QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)))
++ return r; //fixed size is sometimes used with pixmap
+ int hAlign = QApplication::horizontalAlignment( alignment() );
+ int indentX = (hAlign && indent()>0) ? indent() : 0;
+ QFontMetrics fm(font());
+@@ -422,18 +424,26 @@
+
+ void KURLLabel::setMargin( int margin )
+ {
+- QLabel::setMargin(margin);
+- d->MarginAltered = true;
++ QLabel::setMargin(margin);
++ d->MarginAltered = true;
+ }
+
+ void KURLLabel::setFocusPolicy( FocusPolicy policy )
+ {
+- QLabel::setFocusPolicy(policy);
+- if (!d->MarginAltered) {
+- QLabel::setMargin(policy == NoFocus ? 0 : 3); //better default : better look when focused
+- }
++ QLabel::setFocusPolicy(policy);
++ if (!d->MarginAltered) {
++ QLabel::setMargin(policy == NoFocus ? 0 : 3); //better default : better look when focused
++ }
+ }
+
++void KURLLabel::setSizePolicy ( QSizePolicy policy )
++{
++ QLabel::setSizePolicy(policy);
++ if (!d->MarginAltered && policy.horData()==QSizePolicy::Fixed && policy.verData()==QSizePolicy::Fixed) {
++ QLabel::setMargin(0); //better default : better look when fixed size
++ }
++}
++
+ void KURLLabel::virtual_hook( int, void* )
+ { /*BASE::virtual_hook( id, data );*/ }
+
+--- kdeui/kurllabel.h (revision 502693)
++++ kdeui/kurllabel.h (revision 506549)
+@@ -163,6 +163,11 @@
+ */
+ virtual void setFocusPolicy ( FocusPolicy policy );
+
++ /**
++ * Reimplemented for internal reasons, the API is not affected.
++ */
++ virtual void setSizePolicy ( QSizePolicy );
++
+ public slots:
+ /**
+ * Turns on or off the underlining.
+--- kdeui/ksconfig.cpp (revision 502693)
++++ kdeui/ksconfig.cpp (revision 506549)
+@@ -17,6 +17,7 @@
+ Boston, MA 02110-1301, USA.
+ */
+
++#include <config.h>
+
+ #include <qcheckbox.h>
+ #include <qcombobox.h>
+@@ -503,9 +504,9 @@
+ langfnames.append(""); // Default
+ dictcombo->insertItem (i18n("ASpell Default"));
+
+- // dictionary path
+- // FIXME: use "aspell dump config" to find out the dict-dir
+- QFileInfo dir ("/usr/lib/aspell");
++ // Aspell now have /usr/lib/aspell as
++ // ASPELL_DATADIR default.
++ QFileInfo dir ( ASPELL_DATADIR );
+ if (!dir.exists() || !dir.isDir())
+ dir.setFile ("/usr/lib/aspell-0.60");
+ if (!dir.exists() || !dir.isDir())
More information about the pkg-kde-commits
mailing list