[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    proko2: kdepim/kmail [POSSIBLY UNSAFE]
From:       Marc Mutz <Marc.Mutz () uni-bielefeld ! de>
Date:       2004-11-05 8:54:55
Message-ID: 20041105085455.3860E16DE9 () office ! kde ! org
[Download RAW message or body]

CVS commit by mutz: 

Fix Aegypten issue #269 by providing a way to save the text of the reader. Exposes a \
bug in KHTMLPart, see kfm-devel.


  A            kmcommands.cpp   1.177.2.1 [POSSIBLY UNSAFE: printf] [no copyright]
  A            kmcommands.h   1.51.2.1 [no copyright]
  A            kmmainwidget.cpp   1.281.2.1 [POSSIBLY UNSAFE: \
KRun::runCommand,printf] [no copyright]  A            kmmainwidget.h   1.80.2.1 \
[UNKNOWN]  A            kmmainwin.rc   1.80.2.1
  A            kmreaderwin.h   1.200.2.1 [no copyright]
  M +46 -0     kmreaderwin.cpp   1.777.2.5.2.4


--- kdepim/kmail/kmreaderwin.cpp  #1.777.2.5.2.3:1.777.2.5.2.4
@@ -2289,4 +2289,50 @@ QString KMReaderWin::createAtmFileLink()
 }
 
+#if 1
+namespace {
+  class SelectionSaver {
+    KHTMLPart * const part;
+    DOM::Range oldSelection;
+  public:
+    SelectionSaver( KHTMLPart * p )
+      : part( p ),
+        oldSelection( p->hasSelection() ? p->selection() : \
p->htmlDocument().createRange() ) {} +
+    ~SelectionSaver() {
+      part->setSelection( oldSelection );
+    }
+  };
+}
+
+static QString selectedTextOrAll( KHTMLPart * part ) {
+  SelectionSaver saver( part );
+  part->selectAll();
+  return part->selectedText();
+}
+#endif
+
+#if 0
+static QString bodyElementInnerText( KHTMLPart * part ) {
+  const DOM::HTMLDocument doc = part->htmlDocument();
+  if ( doc.isNull() )
+    return QString::null;
+  const DOM::HTMLElement body = doc.body();
+  if ( body.isNull() )
+    return QString::null;
+  return body.innerText().string();
+}
+
+static QString selectedTextOrAll( KHTMLPart * part ) {
+  if ( part->hasSelection() )
+    return part->selectedText();
+  else
+    return bodyElementInnerText( part );
+}
+#endif
+
+void KMReaderWin::slotSaveTextAs() {
+  ( new KMail::SaveTextAsCommand( selectedTextOrAll( mViewer ), this ) )->start();
+}
+
 #include "kmreaderwin.moc"
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic