[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