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(&para, &index, &dummy1, &dummy2);
++    if (para == -1 || index == -1)
++        w->getCursorPosition(&para, &index);
++
++    return computeCharOffset(para, index);
++}
++
++long RenderTextArea::selectionEnd()
++{
++    TextAreaWidget* w = static_cast<TextAreaWidget*>(m_widget);
++    int para, index, dummy1, dummy2;
++    w->getSelection(&dummy1, &dummy2, &para, &index);
++    if (para == -1 || index == -1)
++        w->getCursorPosition(&para, &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