[Pkg-kde-commits] rev 2183 - trunk/packages/koffice/debian/patches

Isaac Clerencia isaac at costa.debian.org
Fri Nov 11 10:30:45 UTC 2005


Author: isaac
Date: 2005-11-11 10:30:44 +0000 (Fri, 11 Nov 2005)
New Revision: 2183

Added:
   trunk/packages/koffice/debian/patches/01_koffice_branch_r479651.diff
Log:
Add koffice branch pull


Added: trunk/packages/koffice/debian/patches/01_koffice_branch_r479651.diff
===================================================================
--- trunk/packages/koffice/debian/patches/01_koffice_branch_r479651.diff	2005-11-11 10:29:49 UTC (rev 2182)
+++ trunk/packages/koffice/debian/patches/01_koffice_branch_r479651.diff	2005-11-11 10:30:44 UTC (rev 2183)
@@ -0,0 +1,1514 @@
+#DPATCHLEVEL=0
+--- kword/OASIS	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kword/OASIS	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,11 +1,11 @@
+-Notes about the use of the OASIS format in kword:
++Notes about the use of the OpenDocument format in kword:
+ -------------------------------------------------
+ 
+ * Tables
+-In OASIS, tables are treated like paragraphs.
++In OpenDocument, tables are treated like paragraphs.
+ In KWord, tables are either "inline as character" or "at a fixed position".
+ This gives three cases:
+-  + inline table, alone in its paragraph -> can be saved the OASIS way.
++  + inline table, alone in its paragraph -> can be saved the OpenDocument way.
+   + inline table with other things in the paragraph -> wrapper frame+textbox needed
+        The wrapper frame is marked with a koffice-specific attribute, koffice:is-wrapper-frame="true".
+        Upon loading, the wrapper textbox is removed if it doesn't contain anything else.
+@@ -15,7 +15,7 @@
+ 
+ * Frame behavior on new pages
+ KWord supports "What happens on new page: create a new frame and reconnect, no followup, make copy."
+-OASIS doesn't, but this doesn't matter, it doesn't affect rendering of existing documents, only editing.
++OpenDocument doesn't, but this doesn't matter, it doesn't affect rendering of existing documents, only editing.
+ So we save this with a koffice:frame-behavior-on-new-page attribute, possible values:
+ followup, copy or none. Default value: copy for header/footers, none otherwise.
+ 
+@@ -24,14 +24,14 @@
+ and the page-based DTP mode (page-sequence element).
+ 
+ * Headers and footers
+-OASIS supports odd/even headers and footers using "header" and "header-left".
++OpenDocument supports odd/even headers and footers using "header" and "header-left".
+ But for first page header/footer KWord should create a separate page layout,
+ this is not done yet (it uses its own tag instead, as a temporary hack).
+-Also OASIS doesn't allow a different style for header and header-left,
++Also OpenDocument doesn't allow a different style for header and header-left,
+ so they must have the same min-size, border, margins...
+ 
+ * Columns
+-OASIS OpenDocument has "number of columns" and "space between columns", so it's OK for kword.
++OpenDocument has "number of columns" and "space between columns", so it's OK for kword.
+ OOo however also supports columns of different sizes and with different spaces, we can't load that.
+ 
+ Notes about interoperability with OpenOffice.org-2.0:
+@@ -45,7 +45,7 @@
+ List of bugs in OOo-1.9.113 not affecting interoperability:
+  - style:text-underline-type="single" is missing for underlined text, only style is specified (code has workaround)
+ 
+-List of features that KWord has, but OOo doesn't have, and which are in the OASIS standard:
++List of features that KWord has, but OOo doesn't have, and which are in the OpenDocument standard:
+  - OOo doesn't load nor save the cursor-position processing instruction 
+  - DTP mode (page-sequence)
+  - frame break (we model it with fo:break-after="column" in the paragraph style)
+@@ -57,6 +57,13 @@
+  - DTP mode using the draw:page element (probably)
+  - (after 1.0) border around a word or any run of text (probably)
+ 
++List of features that KWord doesn't have, and which OpenDocument has:
++ (that list would be quite long, but let's list the real-life interoperability problems)
++ - lack of section support (changes of page layout, but also changes of column settings
++   in the middle of a page)
++   We could at least keep section styles and section markers (begin/end),
++    so that load+save preserves it.
++
+ Differences in rendering:
+  - In KWord endnotes are right under the end of the text; in OOo they are on a separate page.
+ 
+--- kword/framedia.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kword/framedia.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1972,6 +1972,7 @@
+                 FramesetSetProtectSizeCommand* cmd = new FramesetSetProtectSizeCommand( fs, QString::null, fs->isProtectSize(), protectSize->isChecked() );
+                 macroCmd->addCommand(cmd);
+                 cmd->execute();
++				frameSetProtectedSize = protectSize->isChecked();
+ 
+             }
+             if ( !fs->isMainFrameset() &&
+--- kword/kwtextframeset.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kword/kwtextframeset.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1667,6 +1667,8 @@
+     if ( hasMinHeight ) {
+         double height = KoUnit::parseValue( tag.attributeNS( KoXmlNS::fo, "min-height", QString::null ) );
+         frame->setMinFrameHeight( height );
++        if ( height > frame->height() ) // do apply the min frame height
++            frame->setHeight( height );
+     }
+ 
+     // Load overflow behavior (OASIS 14.27.27, not in OO-1.1 DTD). This is here since it's only for text framesets.
+--- kword/kwframe.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kword/kwframe.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -797,7 +797,7 @@
+     bool hasSelectedFrame();
+ 
+     bool isProtectSize()const { return m_protectSize; }
+-    void setProtectSize( bool _b) { m_protectSize = _b;}
++    void setProtectSize( bool _b); 
+ 
+     /**
+      * Returns true if the frameset is visible.
+--- kword/kwview.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kword/kwview.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -4835,7 +4835,8 @@
+             c.setStyle( style );
+             if ( c.isBullet() )
+                 c.setSuffix( QString::null );
+-            // else the suffix remains the default, '.'
++            else
++                c.setSuffix( "." );
+             // TODO save this setting, to use the last one selected in the dialog?
+             // (same for custom bullet char etc.)
+ 
+--- kword/kwframe.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kword/kwframe.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -862,7 +862,8 @@
+ 
+ void KWFrame::setMinFrameHeight(double h)
+ {
+-    //kdDebug() << k_funcinfo << m_frameSet->getName() << " " << this << " " << h << endl;
++    //if ( m_frameSet )
++    //    kdDebug() << k_funcinfo << m_frameSet->getName() << " " << this << " " << h << endl;
+     m_minFrameHeight = h;
+ }
+ 
+@@ -1098,6 +1099,16 @@
+     }
+ }
+ 
++void KWFrameSet::setProtectSize( bool _b)
++{
++    m_protectSize = _b;
++    for(KWFrame *f=frames.first();f;f=frames.next())
++    {
++        if ( f->isSelected() )
++            f->repaintResizeHandles();
++    }
++}
++
+ void KWFrameSet::setAnchored( KWTextFrameSet* textfs, int paragId, int index, bool placeHolderExists /* = false */, bool repaint )
+ {
+     KWTextParag * parag = static_cast<KWTextParag *>( textfs->textDocument()->paragAt( paragId ) );
+--- kword/kwdoc.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kword/kwdoc.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -2699,6 +2699,7 @@
+     m_varColl->variableSetting()->setModificationDate(QDateTime::currentDateTime());
+     recalcVariables( VT_DATE );
+     recalcVariables( VT_TIME ); // for "current time"
++    recalcVariables( VT_STATISTIC );
+     m_syntaxVersion = CURRENT_SYNTAX_VERSION; // ### clean this up once we remove the old format
+ 
+     KoGenStyles mainStyles;
+@@ -3266,6 +3267,7 @@
+     m_varColl->variableSetting()->setModificationDate(QDateTime::currentDateTime());
+     recalcVariables( VT_DATE );
+     recalcVariables( VT_TIME ); // for "current time"
++    recalcVariables( VT_STATISTIC );
+     QDomDocument doc = createDomDocument( "DOC", CURRENT_DTD_VERSION );
+     QDomElement kwdoc = doc.documentElement();
+     kwdoc.setAttribute( "editor", "KWord" );
+--- kexi/widget/tableview/kexitableviewdata.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kexi/widget/tableview/kexitableviewdata.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -429,6 +429,13 @@
+ 	virtual int compareItems(Item item1, Item item2);
+ 	int cmpStr(Item item1, Item item2);
+ 	int cmpInt(Item item1, Item item2);
++	int cmpUInt(Item item1, Item item2);
++	int cmpLongLong(Item item1, Item item2);
++	int cmpULongLong(Item item1, Item item2);
++	int cmpDouble(Item item1, Item item2);
++	int cmpDate(Item item1, Item item2);
++	int cmpDateTime(Item item1, Item item2);
++	int cmpTime(Item item1, Item item2);
+ 
+ 	//! internal: for saveRowChanges() and saveNewRow()
+ 	bool saveRow(KexiTableItem& item, bool insert, bool repaint);
+@@ -458,6 +465,10 @@
+ 	int m_autoIncrementedColumn;
+ 
+ 	int (KexiTableViewData::*cmpFunc)(void *, void *);
++
++	//! Temporary, used in compare functions like cmpInt(), cmpString() 
++	//! to avoid memory allocations.
++	QVariant m_leftTmp, m_rightTmp;
+ };
+ 
+ #endif
+--- kexi/widget/tableview/kexitableview.cpp	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kexi/widget/tableview/kexitableview.cpp	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -2134,6 +2134,7 @@
+ 
+ bool KexiTableView::shortCutPressed( QKeyEvent *e, const QCString &action_name )
+ {
++	const int k = e->key();
+ 	KAction *action = m_sharedActions[action_name];
+ 	if (action) {
+ 		if (!action->isEnabled())//this action is disabled - don't process it!
+@@ -2150,15 +2151,15 @@
+ 	//check default shortcut (when user app has no action shortcuts defined
+ 	// but we want these shortcuts to still work)
+ 	if (action_name=="data_save_row")
+-		return (e->key() == Key_Return || e->key() == Key_Enter) && e->state()==ShiftButton;
++		return (k == Key_Return || k == Key_Enter) && e->state()==ShiftButton;
+ 	if (action_name=="edit_delete_row")
+-		return e->key() == Key_Delete && e->state()==ControlButton;
++		return k == Key_Delete && e->state()==ControlButton;
+ 	if (action_name=="edit_delete")
+-		return e->key() == Key_Delete && e->state()==NoButton;
++		return k == Key_Delete && e->state()==NoButton;
+ 	if (action_name=="edit_edititem")
+-		return e->key() == Key_F2 && e->state()==NoButton;
++		return k == Key_F2 && e->state()==NoButton;
+ 	if (action_name=="edit_insert_empty_row")
+-		return e->key() == Key_Insert && e->state()==(ShiftButton | ControlButton);
++		return k == Key_Insert && e->state()==(ShiftButton | ControlButton);
+ 
+ 	return false;
+ }
+@@ -2169,6 +2170,7 @@
+ 		return;
+ //	kdDebug() << "KexiTableView::keyPressEvent: key=" <<e->key() << " txt=" <<e->text()<<endl;
+ 
++	const int k = e->key();
+ 	const bool ro = isReadOnly();
+ 	QWidget *w = focusWidget();
+ //	if (!w || w!=viewport() && w!=this && (!m_editor || w!=m_editor->view() && w!=m_editor)) {
+@@ -2195,11 +2197,11 @@
+ 	}
+ 
+ 	if(m_editor) {// if a cell is edited, do some special stuff
+-		if (e->key() == Key_Escape) {
++		if (k == Key_Escape) {
+ 			cancelEditor();
+ 			e->accept();
+ 			return;
+-		} else if (e->key() == Key_Return || e->key() == Key_Enter) {
++		} else if (k == Key_Return || k == Key_Enter) {
+ 			if (columnType(m_curCol) == KexiDB::Field::Boolean) {
+ 				boolToggled();
+ 			}
+@@ -2218,7 +2220,7 @@
+ 		}
+ 	}
+ 
+-	if(e->key() == Key_Return || e->key() == Key_Enter)
++	if(k == Key_Return || k == Key_Enter)
+ 	{
+ 		emit itemReturnPressed(m_currentItem, m_curRow, m_curCol);
+ 	}
+@@ -2247,8 +2249,6 @@
+ 		}
+ 	}
+ 
+-	switch (e->key())
+-	{
+ /*	case Key_Delete:
+ 		if (e->state()==Qt::ControlButton) {//remove current row
+ 			deleteCurrentRow();
+@@ -2258,46 +2258,35 @@
+ 		}
+ 		break;*/
+ 
+-	case Key_Shift:
+-	case Key_Alt:
+-	case Key_Control:
+-	case Key_Meta:
++	if (k == Key_Shift || k == Key_Alt || k == Key_Control || k == Key_Meta) {
+ 		e->ignore();
+-		break;
+-	case Key_Up:
+-		if (nobtn) {
+-			selectPrevRow();
+-			e->accept();
+-			return;
+-		}
+-		break;
+-	case Key_Down:
+-		if (nobtn) {
++	}
++	else if (k == Key_Up && nobtn) {
++		selectPrevRow();
++		e->accept();
++		return;
++	}
++	else if (k == Key_Down && nobtn) {
+ //			curRow = QMIN(rows() - 1 + (isInsertingEnabled()?1:0), curRow + 1);
+-			selectNextRow();
+-			e->accept();
+-			return;
+-		}
+-		break;
+-	case Key_PageUp:
+-		if (nobtn) {
++		selectNextRow();
++		e->accept();
++		return;
++	}
++	else if (k == Key_PageUp && nobtn) {
+ //			curRow -= visibleHeight() / d->rowHeight;
+ //			curRow = QMAX(0, curRow);
+-			selectPrevPage();
+-			e->accept();
+-			return;
+-		}
+-		break;
+-	case Key_PageDown:
+-		if (nobtn) {
++		selectPrevPage();
++		e->accept();
++		return;
++	}
++	else if (k == Key_PageDown && nobtn) {
+ //			curRow += visibleHeight() / d->rowHeight;
+ //			curRow = QMIN(rows() - 1 + (isInsertingEnabled()?1:0), curRow);
+-			selectNextPage();
+-			e->accept();
+-			return;
+-		}
+-		break;
+-	case Key_Home:
++		selectNextPage();
++		e->accept();
++		return;
++	}
++	else if (k == Key_Home) {
+ 		if (d->appearance.fullRowSelection) {
+ 			//we're in row-selection mode: home key always moves to 1st row
+ 			curRow = 0;//to 1st row
+@@ -2314,8 +2303,8 @@
+ 				curCol = 0;
+ 			}
+ 		}
+-		break;
+-	case Key_End:
++	}
++	else if (k == Key_End) {
+ 		if (d->appearance.fullRowSelection) {
+ 			//we're in row-selection mode: home key always moves to last row
+ 			curRow = m_data->count()-1+(isInsertingEnabled()?1:0);//to last row
+@@ -2332,28 +2321,29 @@
+ 				curCol = columns()-1;//to last col
+ 			}
+ 		}
+-		break;
+-	case Key_Backspace:
+-		if (nobtn && !ro && columnType(curCol) != KexiDB::Field::Boolean && columnEditable(curCol))
++	}
++	else if (k == Key_Backspace && nobtn) {
++		if (!ro && columnType(curCol) != KexiDB::Field::Boolean && columnEditable(curCol))
+ 			createEditor(curRow, curCol, QString::null, true);
+-		break;
+-	case Key_Space:
++	}
++	else if (k == Key_Space) {
+ 		if (nobtn && !ro && columnEditable(curCol)) {
+ 			if (columnType(curCol) == KexiDB::Field::Boolean) {
+ 				boolToggled();
+-				break;
+ 			}
+ 			else
+ 				printable = true; //just space key
+ 		}
+-	case Key_Escape:
++	}
++	else if (k == Key_Escape) {
+ 		if (nobtn && m_rowEditing) {
+ 			cancelRowEdit();
+ 			return;
+ 		}
+-	default:
++	}
++	else {
+ 		//others:
+-		if (nobtn && (e->key()==Key_Tab || e->key()==Key_Right)) {
++		if (nobtn && (k==Key_Tab || k==Key_Right)) {
+ //! \todo add option for stopping at 1st column for Key_left
+ 			//tab
+ 			if (acceptEditor()) {
+@@ -2367,10 +2357,10 @@
+ 					curCol++;
+ 			}
+ 		}
+-		else if ((e->state()==ShiftButton && e->key()==Key_Tab)
+-		 || (nobtn && e->key()==Key_Backtab)
+-		 || (e->state()==ShiftButton && e->key()==Key_Backtab)
+-		 || (nobtn && e->key()==Key_Left)
++		else if ((e->state()==ShiftButton && k==Key_Tab)
++		 || (nobtn && k==Key_Backtab)
++		 || (e->state()==ShiftButton && k==Key_Backtab)
++		 || (nobtn && k==Key_Left)
+ 			) {
+ //! \todo add option for stopping at last column
+ 			//backward tab
+@@ -2385,10 +2375,10 @@
+ 					curCol--;
+ 			}
+ 		}
+-		else if ( nobtn && (e->key()==Key_Enter || e->key()==Key_Return || shortCutPressed(e, "edit_edititem")) ) {
++		else if ( nobtn && (k==Key_Enter || k==Key_Return || shortCutPressed(e, "edit_edititem")) ) {
+ 			startEditOrToggleValue();
+ 		}
+-		else if (nobtn && e->key()==d->contextMenuKey) { //Key_Menu:
++		else if (nobtn && k==d->contextMenuKey) { //Key_Menu:
+ 			showContextMenu();
+ 		}
+ 		else {
+@@ -2401,7 +2391,7 @@
+ 
+ 			qDebug("KexiTableView::KeyPressEvent(): default");
+ 			if (e->text().isEmpty() || !e->text().isEmpty() && !e->text()[0].isPrint() ) {
+-				kdDebug(44021) << "NOT PRINTABLE: 0x0" << QString("%1").arg(e->key(),0,16) <<endl;
++				kdDebug(44021) << "NOT PRINTABLE: 0x0" << QString("%1").arg(k,0,16) <<endl;
+ //				e->ignore();
+ 				QScrollView::keyPressEvent(e);
+ 				return;
+--- kexi/widget/tableview/kexicomboboxtableedit.cpp	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kexi/widget/tableview/kexicomboboxtableedit.cpp	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -509,64 +509,66 @@
+ bool KexiComboBoxTableEdit::handleKeyPress( QKeyEvent *ke, bool editorActive )
+ {
+ 	const int k = ke->key();
+-	if (ke->state()==NoButton && k==Key_F4) {//show popup
++	if ((ke->state()==NoButton && k==Key_F4)
++		|| (ke->state()==AltButton && k==Key_Down))
++	{
++		//show popup
+ 		slotButtonClicked();
+ 		return true;
+ 	}
+ 	else if (editorActive) {
++
++		// The editor may be active but the pull down menu not existant/visible,
++		// e.g. when the user has pressed a normal button to activate the editor
++		// Don't handle the event here in that case.
++		if (!d->popup || !d->popup->isVisible()) {
++			return false;
++		}
++
++		int highlightedOrSelectedRow = d->popup->tableView()->highlightedRow();
++		if (highlightedOrSelectedRow < 0)
++			highlightedOrSelectedRow = d->popup->tableView()->currentRow();
++
+ 		switch (k) {
+ 		case Key_Up:
+-			if (d->popup && d->popup->isVisible()) {
+ 	//			d->popup->tableView()->selectPrevRow();
+ 				d->popup->tableView()->setHighlightedRow( 
+-					d->popup->tableView()->highlightedRow()-1 );
++					QMAX(highlightedOrSelectedRow-1, 0) );
+ 				updateTextForHighlightedRow();
+ 				return true;
+-			}
+ 		case Key_Down:
+-			if (d->popup && d->popup->isVisible()) {
+ 	//			d->popup->tableView()->selectNextRow();
+ 				d->popup->tableView()->setHighlightedRow( 
+-					d->popup->tableView()->highlightedRow()+1 );
++					QMIN(highlightedOrSelectedRow+1, d->popup->tableView()->rows()-1) );
+ 				updateTextForHighlightedRow();
+ 				return true;
+-			}
+ 		case Key_PageUp:
+-			if (d->popup && d->popup->isVisible()) {
+ 	//			d->popup->tableView()->selectPrevPage();
+ 				d->popup->tableView()->setHighlightedRow( 
+-					d->popup->tableView()->highlightedRow()-d->popup->tableView()->rowsPerPage() );
++					QMAX(highlightedOrSelectedRow-d->popup->tableView()->rowsPerPage(), 0) );
+ 				updateTextForHighlightedRow();
+ 				return true;
+-			}
+ 		case Key_PageDown:
+-			if (d->popup && d->popup->isVisible()) {
+ 	//			d->popup->tableView()->selectNextPage();
+ 				d->popup->tableView()->setHighlightedRow( 
+-					d->popup->tableView()->highlightedRow()+d->popup->tableView()->rowsPerPage() );
++					QMIN(highlightedOrSelectedRow+d->popup->tableView()->rowsPerPage(), 
++					 d->popup->tableView()->rows()-1) );
+ 				updateTextForHighlightedRow();
+ 				return true;
+-			}
+ 		case Key_Home:
+-			if (d->popup && d->popup->isVisible()) {
+ 				d->popup->tableView()->setHighlightedRow( 0 );
+ 				updateTextForHighlightedRow();
+ 				return true;
+-			}
+ 		case Key_End:
+-			if (d->popup && d->popup->isVisible()) {
+ 				d->popup->tableView()->setHighlightedRow( d->popup->tableView()->rows()-1 );
+ 				updateTextForHighlightedRow();
+ 				return true;
+-			}
+ 		case Key_Enter:
+ 		case Key_Return: //accept
+-			if (d->popup && d->popup->isVisible()) {
+ 				//select row that is highlighted
+ 				if (d->popup->tableView()->highlightedRow()>=0)
+ 					d->popup->tableView()->selectRow( d->popup->tableView()->highlightedRow() );
+ 				//do not return true: allow to process event
+-			}
+ 		default: ;
+ 		}
+ 	}
+--- kexi/widget/tableview/kexidataawareobjectiface.cpp	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kexi/widget/tableview/kexidataawareobjectiface.cpp	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -261,7 +261,7 @@
+ 
+ int KexiDataAwareObjectInterface::dataSortingOrder() const
+ {
+-	return m_data && m_data->sortingOrder();
++	return m_data ? m_data->sortingOrder() : 0;
+ }
+ 
+ bool KexiDataAwareObjectInterface::sort()
+--- kexi/widget/tableview/kexitableviewdata.cpp	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kexi/widget/tableview/kexitableviewdata.cpp	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -353,11 +353,28 @@
+ 		return;
+ 	}
+ 
+-	const int t = columns.at(m_key)->field()->type();
+-	if (t == KexiDB::Field::Boolean || KexiDB::Field::isNumericType(t))
+-		cmpFunc = &KexiTableViewData::cmpInt;
++	const KexiDB::Field *field = columns.at(m_key)->field();
++	const int t = field->type();
++	if (KexiDB::Field::isFPNumericType(t))
++		cmpFunc = &KexiTableViewData::cmpDouble;
++	else if (t==KexiDB::Field::BigInteger) {
++		if (field->isUnsigned())
++			cmpFunc = &KexiTableViewData::cmpULongLong;
++		else
++			cmpFunc = &KexiTableViewData::cmpLongLong;
++	}
++	else if (t == KexiDB::Field::Integer && field->isUnsigned())
++		cmpFunc = &KexiTableViewData::cmpUInt;
++	else if (t == KexiDB::Field::Boolean || KexiDB::Field::isNumericType(t))
++		cmpFunc = &KexiTableViewData::cmpInt; //other integers
++	else if (t == KexiDB::Field::Date)
++		cmpFunc = &KexiTableViewData::cmpDate;
++	else if (t == KexiDB::Field::Time)
++		cmpFunc = &KexiTableViewData::cmpTime;
++	else if (t == KexiDB::Field::DateTime)
++		cmpFunc = &KexiTableViewData::cmpDateTime;
+ 	else
+-		cmpFunc = &KexiTableViewData::cmpStr;
++		cmpFunc = &KexiTableViewData::cmpStr; //text or anything else
+ }
+ 
+ int KexiTableViewData::compareItems(Item item1, Item item2)
+@@ -365,15 +382,68 @@
+ 	return ((this->*cmpFunc) (item1, item2));
+ }
+ 
++//! compare NULLs : NULL is smaller than everything
++#define CMP_NULLS(item1, item2) \
++	m_leftTmp = ((KexiTableItem *)item1)->at(m_key); \
++	if (m_leftTmp.isNull()) \
++		return -m_order; \
++	m_rightTmp = ((KexiTableItem *)item2)->at(m_key); \
++	if (m_rightTmp.isNull()) \
++		return m_order
++
++#define CAST_AND_COMPARE(casting, item1, item2) \
++	CMP_NULLS(item1, item2); \
++	if (m_leftTmp.casting() < m_rightTmp.casting()) \
++		return -m_order; \
++	if (m_leftTmp.casting() > m_rightTmp.casting()) \
++		return m_order; \
++	return 0
++
+ int KexiTableViewData::cmpInt(Item item1, Item item2)
+ {
+-	return m_order* (((KexiTableItem *)item1)->at(m_key).toInt() - ((KexiTableItem *)item2)->at(m_key).toInt());
++	CAST_AND_COMPARE(toInt, item1, item2);
+ }
+ 
++int KexiTableViewData::cmpUInt(Item item1, Item item2)
++{
++	CAST_AND_COMPARE(toUInt, item1, item2);
++}
++
++int KexiTableViewData::cmpLongLong(Item item1, Item item2)
++{
++	CAST_AND_COMPARE(toLongLong, item1, item2);
++}
++
++int KexiTableViewData::cmpULongLong(Item item1, Item item2)
++{
++	CAST_AND_COMPARE(toULongLong, item1, item2);
++}
++
++int KexiTableViewData::cmpDouble(Item item1, Item item2)
++{
++	CAST_AND_COMPARE(toDouble, item1, item2);
++}
++
++int KexiTableViewData::cmpDate(Item item1, Item item2)
++{
++	CAST_AND_COMPARE(toDate, item1, item2);
++}
++
++int KexiTableViewData::cmpDateTime(Item item1, Item item2)
++{
++	CAST_AND_COMPARE(toDateTime, item1, item2);
++}
++
++int KexiTableViewData::cmpTime(Item item1, Item item2)
++{
++	CAST_AND_COMPARE(toDate, item1, item2);
++}
++
+ int KexiTableViewData::cmpStr(Item item1, Item item2)
+ {
+-	const QString &as =((KexiTableItem *)item1)->at(m_key).toString();
+-	const QString &bs =((KexiTableItem *)item2)->at(m_key).toString();
++	CMP_NULLS(item1, item2);
++	const QString &as = m_leftTmp.toString();
++	const QString &bs = m_rightTmp.toString();
+ 
+ 	const QChar *a = as.unicode();
+ 	const QChar *b = bs.unicode();
+@@ -381,9 +451,9 @@
+ 	if ( a == b )
+ 		return 0;
+ 	if ( a == 0 )
++		return -1;
++	if ( b == 0 )
+ 		return 1;
+-	if ( b == 0 )
+-		return -1;
+ 
+ 	unsigned short au;
+ 	unsigned short bu;
+--- kexi/migration/mysql/mysqlmigrate.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kexi/migration/mysql/mysqlmigrate.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -60,7 +60,7 @@
+ 			~MySQLMigrate();
+ 			//Constructor
+ 			MySQLMigrate();
+-			MySQLMigrate::MySQLMigrate(QObject *parent, const char *name, const QStringList& args = QStringList());
++			MySQLMigrate(QObject *parent, const char *name, const QStringList& args = QStringList());
+ 			
+ 			KexiDB::Field::Type type(const QString& table, const MYSQL_FIELD* t);
+ 			
+@@ -69,8 +69,8 @@
+ 			
+ 			QStringList examineEnumField(const QString& table,
+ 			                             const MYSQL_FIELD* fld);
+-			void MySQLMigrate::getConstraints(int mysqlConstraints, KexiDB::Field* fld);
+-			void MySQLMigrate::getOptions(int flags, KexiDB::Field* fld);
++			void getConstraints(int mysqlConstraints, KexiDB::Field* fld);
++			void getOptions(int flags, KexiDB::Field* fld);
+ 
+ 		/*! driver's static version information, it is automatically implemented
+ 		 in implementation using KEXIDB_DRIVER macro (see driver_p.h) */
+--- kexi/kexidb/connection.cpp	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kexi/kexidb/connection.cpp	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -2073,8 +2073,9 @@
+ 
+ 	KexiDB::Cursor *cursor;
+ 	if (!(cursor = executeQuery(
+-		QString("select t_id, f_type, f_name, f_length, f_precision, f_constraints, f_options, f_order, f_caption, f_help"
+-		" from kexi__fields where t_id=%1 order by f_order").arg(t->m_id) ))) {
++		QString::fromLatin1("select t_id, f_type, f_name, f_length, f_precision, f_constraints, "
++			"f_options, f_default, f_order, f_caption, f_help"
++			" from kexi__fields where t_id=%1 order by f_order").arg(t->m_id) ))) {
+ 		return 0;
+ 	}
+ 	if (!cursor->moveFirst()) {
+--- lib/kotext/kobgspellcheck.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ lib/kotext/kobgspellcheck.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -50,7 +50,6 @@
+ class KoBgSpellCheck::Private
+ {
+ public:
+-    bool enabled;
+     int marked;
+     KoSpell *backSpeller;
+     QPtrDict<KoTextParag> paragCache;
+@@ -67,7 +66,6 @@
+     kdDebug(32500) << "KoBgSpellCheck::KoBgSpellCheck " << this << endl;
+ #endif
+     d = new Private;
+-    d->enabled = false;
+     d->startupChecking = false;
+     d->marked = 0;
+     d->backSpeller = new KoSpell( broker, this, "KoSpell" );
+@@ -99,7 +97,7 @@
+ 
+ void KoBgSpellCheck::setEnabled( bool b )
+ {
+-    d->enabled = b;
++    d->backSpeller->settings()->setBackgroundCheckerEnabled( b );
+     if ( b )
+         start();
+     else
+@@ -108,12 +106,12 @@
+ 
+ bool KoBgSpellCheck::enabled() const
+ {
+-    return d->enabled;
++    return d->backSpeller->settings()->backgroundCheckerEnabled();
+ }
+ 
+ void KoBgSpellCheck::start()
+ {
+-    if ( !d->enabled )
++    if ( !enabled() )
+         return;
+ 
+     d->startupChecking = true;
+--- lib/kotext/kotextformat.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ lib/kotext/kotextformat.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -572,8 +572,11 @@
+     else if ( va == AlignSubScript ) textPos = "sub";
+     else textPos = "0%";
+     textPos += ' ';
+-    textPos += QString::number( d->m_relativeTextSize * 100 );
+-    textPos += '%';
++    if ( va != AlignNormal )
++    {
++        textPos += QString::number( d->m_relativeTextSize * 100 );
++        textPos += '%';
++    }
+     gs.addProperty( "style:text-position", textPos, tt );
+ 
+     if ( m_attributeFont == ATT_SMALL_CAPS )
+--- Makefile.cvs	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ Makefile.cvs	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,4 +1,4 @@
+-# $Id$
++# $Id: Makefile.cvs 16192 1999-01-30 23:14:41Z garbanzo $
+ 
+ all: 
+ 	@echo "This Makefile is only for the CVS repository"
+--- filters/kspread/html/htmlexport.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ filters/kspread/html/htmlexport.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -34,6 +34,7 @@
+ #include <kspread_map.h>
+ #include <kspread_sheet.h>
+ #include <kspread_doc.h>
++#include <kspread_util.h>
+ 
+ typedef KGenericFactory<HTMLExport, KoFilter> HTMLExportFactory;
+ K_EXPORT_COMPONENT_FACTORY( libkspreadhtmlexport, HTMLExportFactory( "kofficefilters" ) )
+@@ -273,9 +274,24 @@
+       QColor bgcolor = cell->bgColor(currentcolumn,currentrow);
+             // FIXME: some formatting seems to be missing with cell->text(), e.g.
+             // "208.00" in KSpread will be "208" in HTML (not always?!)
++            bool link = false;
+ 
++            if ( !cell->link().isEmpty() )
++            {
++                if ( localReferenceAnchor(cell->link()) )
++                {
++                    text = cell->text();
++                }
++                else
++                {
++                    text = " <A href=\"" + cell->link() + "\">" + cell->text() + "</A>";
++                    link = true;
++                }
++            }
++            else
++                text=cell->strOutText();
+ 
+-      text=cell->strOutText();
++
+ #if 0
+             switch( cell->content() ) {
+       case KSpreadCell::Text:
+@@ -341,7 +357,7 @@
+       if( text.at(0) == '!' ) {
+               // this is supposed to be markup, just remove the '!':
+         text = text.right(text.length()-1);
+-      } else {
++      } else if(!link) {
+               // Escape HTML characters.
+         text.replace ('&' , strAmp)
+             .replace ('<' , strLt)
+--- filters/kspread/gnumeric/gnumericexport.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ filters/kspread/gnumeric/gnumericexport.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1580,6 +1580,8 @@
+     headerFooter = headerFooter.replace( "<date>", "&[DATE]" );
+     headerFooter = headerFooter.replace( "<page>", "&[PAGE]" );
+     headerFooter = headerFooter.replace( "<pages>", "&[PAGES]" );
++	headerFooter = headerFooter.replace( "<time>", "&[TIME]" );
++	headerFooter = headerFooter.replace( "<file>", "&[FILE]" );
+     return headerFooter;
+ }
+ 
+--- filters/kspread/gnumeric/gnumericimport.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ filters/kspread/gnumeric/gnumericimport.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -804,9 +804,9 @@
+   if ( count == 0 )
+   {
+     list1 << "&[TAB]" << "&[DATE]" << "&[PAGE]"
+-          << "&[PAGES]";
+-    list2 << "<sheet>" << "<date>" << "<page>"
+-          << "<pages>";
++    		<< "&[PAGES]"<<"&[TIME]" << "&[FILE]";
++	list2 << "<sheet>" << "<date>" << "<page>"
++          << "<pages>" << "<time>" << "<file>";
+     count = list1.count();
+   }
+ 
+@@ -818,9 +818,9 @@
+     {
+       kdDebug(30521) << "Found var: " << list1[i] << endl;
+       if ( i == 0 )
+-        result = result.replace( n, list1[i].length(), table->tableName() );
++        result = result.replace( list1[i], table->tableName() );
+       else
+-        result = result.replace( n, list1[i].length(), list2[i] );
++        result = result.replace( list1[i], list2[i] );
+     }
+   }
+ 
+@@ -885,7 +885,7 @@
+   if ( !foot.isNull() )
+   {
+     kdDebug(30521) << "Parsing footer: " << foot.attribute("Left") << ", " << foot.attribute("Middle") << ", "
+-              << foot.attribute("right") << ", " <<endl;
++              << foot.attribute("Right") << ", " <<endl;
+     if ( foot.hasAttribute("Left") )
+       footLeft = convertVars( foot.attribute("Left"), table );
+     if ( foot.hasAttribute("Middle") )
+--- filters/xsltfilter/export/xsltproc.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ filters/xsltfilter/export/xsltproc.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -216,7 +216,7 @@
+ 
+ int XSLTProc::parse()
+ {
+-    int i;
++    int i=0;
+     xsltStylesheetPtr cur = NULL;
+     xmlDocPtr doc, style;
+ 
+--- filters/xsltfilter/import/xsltproc.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ filters/xsltfilter/import/xsltproc.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -216,7 +216,7 @@
+ 
+ int XSLTProc::parse()
+ {
+-    int i;
++    int i = 0;
+     xsltStylesheetPtr cur = NULL;
+     xmlDocPtr doc, style;
+ 
+--- filters/krita/magick/krita_magick.desktop	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ filters/krita/magick/krita_magick.desktop	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -11,6 +11,7 @@
+ GenericName[de]=Mal- und Bildbearbeitungsprogramm
+ GenericName[es]=Aplicación de pintura y de edición de imágenes
+ GenericName[et]=Joonistamise ja pilditöötluse rakendus
++GenericName[eu]=Irudien marrazketa eta ediziorako aplikazioa
+ GenericName[hu]=Képszerkesztő
+ GenericName[it]=Applicazione per il disegno e la modifica delle immagini
+ GenericName[nl]=Beeldbewerkingsprogramma
+--- filters/kchart/png/pngexport.cpp	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ filters/kchart/png/pngexport.cpp	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -78,7 +78,7 @@
+     else {
+ 	kdDebug() << "PNG Export: Couldn't run export dialog." << endl;
+     }
+-
++    delete exportDialog;
+     return KoFilter::OK;
+ }
+ 
+--- krita/plugins/tool_polyline/kritatoolpolyline.desktop	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ krita/plugins/tool_polyline/kritatoolpolyline.desktop	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,6 +1,7 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+ Name=Polyline Tool
++Name[br]=Ostilh lieslinenn
+ Name[cy]=Erfyn Polylinell
+ Name[da]=Flerlinjeværktøj
+ Name[de]=Polylinien-Werkzeug
+--- krita/plugins/selectiontools/kritaselectiontools.desktop	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ krita/plugins/selectiontools/kritaselectiontools.desktop	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,6 +1,7 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+ Name=Selection Tools
++Name[br]=Ostilhoù choazh
+ Name[ca]=Eines de selecció
+ Name[cy]=Offer Detholi
+ Name[da]=Markeringsværktøj
+--- krita/core/kis_clipboard.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ krita/core/kis_clipboard.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -35,7 +35,7 @@
+ 
+ public:
+ 
+-	virtual KisClipboard::~KisClipboard();
++	virtual ~KisClipboard();
+ 
+ 	static KisClipboard* instance();
+ 
+--- krita/core/kis_filter_registry.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ krita/core/kis_filter_registry.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -26,7 +26,6 @@
+ #include "kis_types.h"
+ #include "kis_generic_registry.h"
+ #include "kaction.h"
+-#include "kis_filter.h"
+ 
+ class QString;
+ class KisView;
+--- kchart/kchart_part.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kchart/kchart_part.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -167,7 +167,7 @@
+     m_colLabels << QString("");
+     m_rowLabels << QString("");
+ 
+-    setAxisDefaults();
++    setChartDefaults();
+ 
+     m_params->setDrawSolidExcessArrows(true);
+ }
+@@ -203,7 +203,7 @@
+ 	}
+     }
+ 
+-    setAxisDefaults();
++    setChartDefaults();
+     m_params->setDrawSolidExcessArrows(true);
+ }
+ 
+@@ -453,7 +453,7 @@
+     else
+         m_currentData = data;
+ 
+-    setAxisDefaults();
++    setChartDefaults();
+ 
+     emit docChanged();
+ }
+@@ -479,7 +479,7 @@
+ }
+ 
+ 
+-void KChartPart::setAxisDefaults()
++void KChartPart::setChartDefaults()
+ {
+   // Settings for the Y axis.
+   //
+@@ -504,9 +504,14 @@
+ 
+   m_params->setAxisParams( KDChartAxisParams::AxisPosBottom, xAxis );
+ 
+-  //FIXME: The following has nothing to do with the axis.  Maybe this
+-  //       function should change name.
++  // Enable line colors.
+   m_params->setLineColor();
++
++ // setting the background layer
++  KDFrame frame;
++  frame.setBackground( QBrush( QColor( 230, 222, 222 ) ) );
++  m_params->setFrame( KDChartEnums::AreaInnermost, frame, 0, 0, 0, 0 );
++
+ }
+ 
+ 
+@@ -614,7 +619,7 @@
+ {
+     delete m_params;
+     m_params = new KChartParams();
+-    setAxisDefaults();
++    setChartDefaults();
+ }
+ 
+ 
+@@ -832,7 +837,7 @@
+ 	    m_rowLabels = params.axisLabelStringList();
+ 	}
+ 
+-	setAxisDefaults();
++	setChartDefaults();
+     }
+ 
+     m_params->setDrawSolidExcessArrows(true);
+--- kchart/kchart_part.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kchart/kchart_part.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -99,7 +99,7 @@
+ 			       QDomDocument &doc) const;
+     QFont        toFont(QDomElement &element)     const;
+ 
+-    void         setAxisDefaults();
++    void         setChartDefaults();
+ 
+ private:
+     // The chart and its contents
+--- kivio/kiviopart/kivio_view.cpp	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kivio/kiviopart/kivio_view.cpp	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1487,7 +1487,8 @@
+     if (!pStencil)
+       return;
+ 
+-    float w,h;
++    float w = 0.0;
++    float h = 0.0;
+     KMacroCommand *macro = new KMacroCommand( i18n("Change Size of Begin Arrow"));
+     bool createMacro = false;
+     while( pStencil )
+@@ -1516,7 +1517,8 @@
+     if (!pStencil)
+       return;
+ 
+-    float w,h;
++    float w = 0.0;
++    float h = 0.0;
+     KMacroCommand *macro = new KMacroCommand( i18n("Change Size of End Arrow"));
+     bool createMacro = false;
+     while( pStencil )
+--- kpresenter/kprpage.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kprpage.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -525,9 +525,9 @@
+ 
+     bool hasHeader() const { return m_bHasHeader; }
+     bool hasFooter() const { return m_bHasFooter; }
+-    void setHeader( bool b );
+-    void setFooter( bool b );
+-
++	void setHeader( bool b, bool _updateDoc = true );
++	void setFooter( bool b, bool _updateDoc = true );
++	
+     QString oasisNamePage( int posPage ) const;
+ 
+ private:
+--- kpresenter/kpbackground.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kpbackground.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -694,11 +694,12 @@
+     }
+ }
+ 
+-void KPBackGround::drawBorders( QPainter *_painter, const QSize& ext, const QRect& /*crect*/ )
++void KPBackGround::drawBorders( QPainter *_painter, const QSize& /*ext*/, const QRect& /*crect*/ )
+ {
+     _painter->setPen( QApplication::palette().active().color( QColorGroup::Dark ) );
+     _painter->setBrush( Qt::NoBrush );
+-    _painter->drawRect( 0, 0, ext.width() + 1, ext.height() + 1 );
++	QRect rect = m_page->getZoomPageRect();
++	_painter->drawRect( rect.x()-1,rect.y()-1,rect.width()+1,rect.height()+1 );
+ }
+ 
+ void KPBackGround::generateGradient( const QSize& size )
+--- kpresenter/propertyeditor.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/propertyeditor.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -241,7 +241,7 @@
+             {
+                 KCommand *cmd= new KPrGeometryPropertiesCommand( i18n( "Protect Object" ), m_objects,
+                                                                  generalValue.m_protect == STATE_ON,
+-                                                                 KPrGeometryPropertiesCommand::ProtectSize );
++                                                                 KPrGeometryPropertiesCommand::ProtectSize ,m_doc);
+ 
+                 if ( !macro )
+                 {
+@@ -255,7 +255,7 @@
+             {
+                 KCommand *cmd= new KPrGeometryPropertiesCommand( i18n( "Keep Ratio" ), m_objects,
+                                                                  generalValue.m_keepRatio == STATE_ON,
+-                                                                 KPrGeometryPropertiesCommand::KeepRatio );
++                                                                 KPrGeometryPropertiesCommand::KeepRatio,m_doc );
+                 if ( !macro )
+                 {
+                     macro = new KMacroCommand( i18n( "Apply Properties" ) );
+--- kpresenter/kprvariable.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kprvariable.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -129,6 +129,8 @@
+                        m_subtype == VST_STATISTIC_NB_LINES ||
+                        m_subtype == VST_STATISTIC_NB_CHARACTERE);
+     KPrPage *page = m_doc->activePage();
++    if( !page) //when we load file active page is null
++	    return;
+     QPtrListIterator<KPObject> objIt( page->objectList() );
+ 
+     for ( objIt.toFirst(); objIt.current(); ++objIt )
+--- kpresenter/kprcommand.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kprcommand.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -2296,11 +2296,12 @@
+ 
+ 
+ KPrGeometryPropertiesCommand::KPrGeometryPropertiesCommand( const QString &name, QPtrList<KPObject> &objects,
+-                                                            bool newValue, KgpType type )
++                                                            bool newValue, KgpType type,KPresenterDoc *_doc )
+ : KNamedCommand( name )
+ , m_objects( objects )
+ , m_newValue( newValue )
+ , m_type( type )
++, m_doc( _doc )
+ {
+     QPtrListIterator<KPObject> it( m_objects );
+     for ( ; it.current() ; ++it )
+@@ -2315,12 +2316,13 @@
+ 
+ KPrGeometryPropertiesCommand::KPrGeometryPropertiesCommand( const QString &name, QValueList<bool> &lst,
+                                                             QPtrList<KPObject> &objects, bool newValue,
+-                                                            KgpType type)
++                                                            KgpType type, KPresenterDoc *_doc)
+ : KNamedCommand( name )
+ , m_oldValue( lst )
+ , m_objects( objects )
+ , m_newValue( newValue )
+ , m_type( type )
++, m_doc ( _doc )
+ {
+     QPtrListIterator<KPObject> it( m_objects );
+     for ( ; it.current() ; ++it )
+@@ -2340,7 +2342,11 @@
+     for ( ; it.current() ; ++it )
+     {
+         if ( m_type == ProtectSize )
++		{
+             it.current()->setProtect( m_newValue );
++			if ( it.current()->isSelected() )
++					m_doc->repaint( it.current() );
++		}
+         else if ( m_type == KeepRatio)
+             it.current()->setKeepRatio( m_newValue );
+     }
+@@ -2352,7 +2358,11 @@
+     for ( unsigned int i = 0; i < m_objects.count(); ++i ) {
+         obj = m_objects.at( i );
+         if ( m_type == ProtectSize )
++		{
+             obj->setProtect( *m_oldValue.at(i) );
++			if ( obj->isSelected() )
++					m_doc->repaint( obj );
++		}
+         else if ( m_type == KeepRatio)
+             obj->setKeepRatio( *m_oldValue.at(i) );
+     }
+--- kpresenter/kprcommand.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kprcommand.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -955,9 +955,9 @@
+ public:
+     enum KgpType { ProtectSize, KeepRatio};
+     KPrGeometryPropertiesCommand( const QString &name, QPtrList<KPObject> &objects,
+-                                  bool newValue, KgpType type );
++                                  bool newValue, KgpType type, KPresenterDoc *_doc );
+     KPrGeometryPropertiesCommand( const QString &name, QValueList<bool> &lst, QPtrList<KPObject> &objects,
+-                                  bool newValue, KgpType type );
++                                  bool newValue, KgpType type, KPresenterDoc *_doc );
+     ~KPrGeometryPropertiesCommand();
+ 
+     virtual void execute();
+@@ -968,6 +968,7 @@
+     QPtrList<KPObject> m_objects;
+     bool m_newValue;
+     KgpType m_type;
++	KPresenterDoc *m_doc;
+ };
+ 
+ class KPrProtectContentCommand : public KNamedCommand
+--- kpresenter/kprcanvas.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kprcanvas.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -876,7 +876,7 @@
+                 // we don't support rotating multiple objects yet
+                 deSelectAllObj();
+ 
+-                if ( kpobject )
++                if ( kpobject && !kpobject->isProtect())
+                 {
+                     m_rotateObject = kpobject;
+                     m_angleBeforeRotate = kpobject->getAngle();
+@@ -1552,6 +1552,12 @@
+ 
+ 	if ( editMode ) {
+ 	  m_view->setRulerMousePos( e->x(), e->y() );
++        if ( toolEditMode == TEM_ROTATE )
++        {
++            setCursor( KPresenterUtils::rotateCursor() );
++            if ( !mousePressed )
++                return;
++        }
+ 
+         KPObject *kpobject;
+         if ( ( !mousePressed || ( m_tmpHorizHelpline !=-1 && m_tmpVertHelpline != -1 && modType == MT_NONE ) )&&
+@@ -5572,7 +5578,7 @@
+     if ( lst.isEmpty())
+         return 0L;
+     KCommand *cmd= new KPrGeometryPropertiesCommand( i18n("Keep Ratio"), listKeepRatio, lst, p,
+-                                                     KPrGeometryPropertiesCommand::KeepRatio);
++                                                     KPrGeometryPropertiesCommand::KeepRatio,m_view->kPresenterDoc());
+     cmd->execute();
+     return cmd;
+ }
+@@ -5592,7 +5598,7 @@
+     if ( lst.isEmpty())
+         return 0L;
+     KCommand *cmd= new KPrGeometryPropertiesCommand( i18n("Protect Object"), listProt, lst, protect,
+-                                                     KPrGeometryPropertiesCommand::ProtectSize );
++                                                     KPrGeometryPropertiesCommand::ProtectSize,m_view->kPresenterDoc() );
+     cmd->execute();
+     return cmd;
+ 
+--- kpresenter/kpresenter_doc.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kpresenter_doc.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -520,7 +520,7 @@
+     m_varColl->variableSetting()->setModificationDate(QDateTime::currentDateTime());
+     recalcVariables( VT_DATE );
+     recalcVariables( VT_TIME );
+-
++    recalcVariables( VT_STATISTIC );
+     QDomDocument doc = createDomDocument( "DOC", CURRENT_DTD_VERSION );
+     QDomElement presenter=doc.documentElement();
+     presenter.setAttribute("editor", "KPresenter");
+@@ -1029,7 +1029,7 @@
+     m_varColl->variableSetting()->setModificationDate(QDateTime::currentDateTime());
+     recalcVariables( VT_DATE );
+     recalcVariables( VT_TIME );
+-
++    recalcVariables( VT_STATISTIC );
+     KoGenStyles mainStyles;
+     KoSavingContext savingContext( mainStyles, 0, false, KoSavingContext::Store );
+ 
+@@ -3639,6 +3639,7 @@
+         terminateEditing(_header);
+         deSelectObj(_header);
+     }
++	m_masterPage->setHeader( b, false );
+     updateHeaderFooterButton();
+     repaint(b);
+ }
+@@ -3652,6 +3653,7 @@
+         terminateEditing(_footer);
+         deSelectObj(_footer);
+     }
++	m_masterPage->setFooter( b, false );
+     updateHeaderFooterButton();
+     repaint(b);
+ }
+--- kpresenter/kprpage.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kpresenter/kprpage.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -2082,7 +2082,7 @@
+     {
+         if ( it.current()== m_doc->header() || it.current()== m_doc->footer() )
+             continue;
+-        if( it.current()->isSelected() )
++        if( it.current()->isSelected() && !it.current()->isProtect())
+         {
+             _objects.append( it.current() );
+         }
+@@ -2457,16 +2457,18 @@
+     return imageEffectCmd;
+ }
+ 
+-void KPrPage::setHeader( bool b )
++void KPrPage::setHeader( bool b, bool _updateDoc )
+ {
+     m_bHasHeader = b;
+-    m_doc->setHeader(b);
++	if ( _updateDoc )
++    	m_doc->setHeader(b);
+ }
+ 
+-void KPrPage::setFooter( bool b )
++void KPrPage::setFooter( bool b, bool _updateDoc )
+ {
+     m_bHasFooter = b;
+-    m_doc->setFooter( b );
++	if ( _updateDoc )
++    	m_doc->setFooter( b );
+ }
+ 
+ void KPrPage::setUseMasterBackground( bool useMasterBackground )
+--- kspread/kspread_cell.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/kspread_cell.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -596,7 +596,7 @@
+      *
+      * @return the cell that decides the format for the cell in question.
+      */
+-    KSpreadCell *KSpreadCell::ultimateObscuringCell() const;
++    KSpreadCell *ultimateObscuringCell() const;
+ 
+     /**
+      * @return the obscuring cell list (might be empty)
+--- kspread/kspread_sheet.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/kspread_sheet.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -7056,7 +7056,7 @@
+     }
+ 
+     KoStyleStack styleStack;
+-    styleStack.setTypeProperties("table-cell"); //style for column is cell format
++    styleStack.setTypeProperties("table-column"); //style for column
+     if ( column.hasAttributeNS( KoXmlNS::table, "default-cell-style-name" ) )
+     {
+         //todo load cell attribute default into this column
+@@ -7230,7 +7230,7 @@
+                 {
+                     bool ok = false;
+                     cols = cellElement.attributeNS( KoXmlNS::table, "number-columns-repeated", QString::null ).toInt( &ok );
+-                   if ( !haveStyle )
++                   if ( !haveStyle && ( cell->isEmpty() && cell->comment( columnIndex, backupRow ).isEmpty() ) )
+                     {
+                         //just increment it
+                         columnIndex +=cols - 1;
+@@ -7769,11 +7769,14 @@
+ bool KSpreadSheet::loadXML( const QDomElement& sheet )
+ {
+     bool ok = false;
+-    d->name = sheet.attribute( "name" );
+-    if ( d->name.isEmpty() )
++    if ( !doc()->loadingInfo() ||  !doc()->loadingInfo()->loadTemplate() )
+     {
+-      doc()->setErrorMessage( i18n("Invalid document. Sheet name is empty.") );
+-      return false;
++        d->name = sheet.attribute( "name" );
++        if ( d->name.isEmpty() )
++        {
++            doc()->setErrorMessage( i18n("Invalid document. Sheet name is empty.") );
++            return false;
++        }
+     }
+ 
+     bool detectDirection = true;
+--- kspread/ksploadinginfo.h	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/ksploadinginfo.h	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -26,7 +26,7 @@
+ class KSPLoadingInfo
+ {
+ public:
+-    KSPLoadingInfo() {}
++    KSPLoadingInfo() { m_loadTemplate = false;}
+     ~KSPLoadingInfo() {}
+     void addWordInAreaList( const QString & word) { m_areaNamed.append( word ); }
+     bool findWordInAreaList(const QString & word) const { return (m_areaNamed.find( word ) != m_areaNamed.end());}
+@@ -35,10 +35,18 @@
+ 
+     void addMarkerSelection( KSpreadSheet *sheet, const QPoint & _point ) { m_markerSelection.insert( sheet, _point );}
+ 
++    void setLoadTemplate( bool _b ) {
++        m_loadTemplate = _b;
++    }
++    bool loadTemplate() const {
++        return m_loadTemplate;
++    }
++
+ private:
+     QStringList m_areaNamed;
+     QMap<QString,QDomElement> m_validationList;
+     QMap<KSpreadSheet*, QPoint> m_markerSelection;
++    bool m_loadTemplate;
+ };
+ 
+ #endif /* KPRLOADINGINFO_H */
+--- kspread/kspread_doc.cc	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/kspread_doc.cc	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -173,6 +173,11 @@
+ QValueList<KSpreadDoc*> DocPrivate::s_docs;
+ int DocPrivate::s_docId = 0;
+ 
++#define deleteLoadingInfo() { \
++        delete d->m_loadingInfo; \
++        d->m_loadingInfo = 0L; \
++}
++
+ KSpreadDoc::KSpreadDoc( QWidget *parentWidget, const char *widgetName, QObject* parent, const char* name, bool singleViewMode )
+   : KoDocument( parentWidget, widgetName, parent, name, singleViewMode )
+ {
+@@ -353,7 +358,10 @@
+     if ( ret == KoTemplateChooseDia::Template )
+     {
+         resetURL();
++        d->m_loadingInfo = new KSPLoadingInfo;
++        d->m_loadingInfo->setLoadTemplate( true );
+         bool ok = loadNativeFormat( f );
++        deleteLoadingInfo();
+         if ( !ok )
+             showLoadingErrorDialog();
+         setEmpty();
+@@ -908,14 +916,10 @@
+     delete stylesWriter;;
+ }
+ 
+-#define deleteLoadingInfo() { \
+-        delete d->m_loadingInfo; \
+-        d->m_loadingInfo = 0L; \
+-}
+-
+ bool KSpreadDoc::loadOasis( const QDomDocument& doc, KoOasisStyles& oasisStyles, const QDomDocument& settings, KoStore* )
+ {
+-    d->m_loadingInfo = new KSPLoadingInfo;
++    if ( !d->m_loadingInfo )
++        d->m_loadingInfo = new KSPLoadingInfo;
+ 
+     QTime dt;
+     dt.start();
+--- kspread/templates/HomeFamily/MenuPlan.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/HomeFamily/MenuPlan.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%A %d %B %Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <defaults row-height="13" col-width="65" />
+  <styles>
+   <style type="0" name="Default" >
+--- kspread/templates/HomeFamily/CreditCardTracker.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/HomeFamily/CreditCardTracker.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%A %d %B %Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <defaults row-height="13" col-width="65" />
+  <defaults row-height="13" col-width="65" />
+  <styles>
+--- kspread/templates/HomeFamily/VacationChecklist.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/HomeFamily/VacationChecklist.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%A %d %B %Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <defaults row-height="13" col-width="65" />
+  <defaults row-height="13" col-width="65" />
+  <styles>
+--- kspread/templates/HomeFamily/BMI.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/HomeFamily/BMI.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%m/%d/%Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <map markerColumn="3" activeTable="Sheet1" markerRow="9" >
+   <table columnnumber="0" borders="0" hide="0" hidezero="0" grid="0" firstletterupper="0" printFormulaIndicator="0" printGrid="0" showFormulaIndicator="1" showFormula="0" lcmode="0" name="Sheet1" borders1.2="1" printCommentIndicator="0" >
+    <paper format="A4" orientation="Portrait" >
+--- kspread/templates/Business/Invoice.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/Business/Invoice.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%A %d %B %Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <map markerColumn="1" activeTable="Table1" markerRow="7" >
+   <table columnnumber="0" borders="0" hide="0" hidezero="0" grid="0" firstletterupper="0" printFormulaIndicator="0" printGrid="0" showFormulaIndicator="1" showFormula="0" lcmode="0" name="Table1" borders1.2="1" printCommentIndicator="0" >
+    <paper format="A4" orientation="Portrait" >
+--- kspread/templates/Business/ExpenseReport.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/Business/ExpenseReport.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%m/%d/%Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <map markerColumn="1" activeTable="Sheet1" markerRow="10" >
+   <table columnnumber="0" borders="0" hide="0" hidezero="0" grid="0" firstletterupper="0" printFormulaIndicator="0" printGrid="0" showFormulaIndicator="1" showFormula="0" lcmode="0" name="Sheet1" borders1.2="1" printCommentIndicator="0" >
+    <paper format="A4" orientation="Landscape" >
+--- kspread/templates/Business/PackingSlip.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/Business/PackingSlip.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%A %d %B %Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <defaults row-height="15" col-width="75" />
+  <defaults row-height="15" col-width="75" />
+  <styles>
+--- kspread/templates/Business/PriceQuotation.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/Business/PriceQuotation.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%A %d %B %Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <defaults row-height="15" col-width="75" />
+  <styles>
+   <style type="0" name="Default" >
+--- kspread/templates/Business/BalanceSheet.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/Business/BalanceSheet.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%A %d %B %Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <defaults row-height="15" col-width="75" />
+  <styles>
+   <style type="0" name="Default" >
+--- kspread/templates/General/StudentIDCard.kst	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ kspread/templates/General/StudentIDCard.kst	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -1,7 +1,6 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ <!DOCTYPE spreadsheet PUBLIC "-//KDE//DTD kspread 1.2//EN" "http://www.koffice.org/DTD/kspread-1.2.dtd">
+ <spreadsheet xmlns="http://www.koffice.org/DTD/kspread" mime="application/x-kspread" syntaxVersion="1" editor="KSpread" >
+- <locale positivePrefixCurrencySymbol="True" negativeMonetarySignPosition="1" negativePrefixCurrencySymbol="True" fracDigits="2" thousandsSeparator="," dateFormat="%m/%d/%Y" timeFormat="%I:%M:%S %p" monetaryDecimalSymbol="." weekStartsMonday="False" currencySymbol="$" negativeSign="-" positiveSign="" positiveMonetarySignPosition="1" decimalSymbol="." monetaryThousandsSeparator="," dateFormatShort="%m/%d/%y" />
+  <map markerColumn="1" activeTable="Sheet1" markerRow="1" >
+   <table columnnumber="0" borders="0" hide="0" hidezero="0" grid="0" firstletterupper="0" printFormulaIndicator="0" printGrid="0" showFormulaIndicator="1" showFormula="0" lcmode="0" name="Sheet1" borders1.2="1" printCommentIndicator="0" >
+    <paper format="A4" orientation="Portrait" >
+--- changes-1.4.2	(.../tags/koffice/1.4.2/koffice)	(revision 479651)
++++ changes-1.4.2	(.../branches/koffice/1.4/koffice)	(revision 479651)
+@@ -7,6 +7,8 @@
+ * Fix loading and saving of grayscale images
+ * Fix Bug 110293: canvas does not get focus on click (spinboxes in
+   dockers keep hogging the focus)
++* Fix Edit -> Clear to not remove the selection and use the correct name in the command history.
++* Fix Edit -> Cut to make the deselect undoable.
+ 
+ Karbon
+ 
+@@ -66,7 +68,12 @@
+ 
+ KPresenter
+ * Fix Bug 112303: Usability: Make use of "End"-key in a textframe
++* Fix OASIS saving
++    - saving of draw:points, remove blank at beginning
++    - don't save fill style when the brush style is NoBrush
++    - saving of group object.
+ 
++
+ All KOffice applications
+ * Fix: The new/open/recent documents dialog doesn't open non-local files if dimissed with the OK button (#109000)
+ * OpenDocument files can now contain embedded documents which are not in the OpenDocument format, e.g. Kivio.




More information about the pkg-kde-commits mailing list