SVN commit 464554 by knight: BUG: 112376 M +27 -2 kspread_canvas.cc M +9 -0 kspread_canvas.h M +8 -2 kspread_sheet.cc --- trunk/koffice/kspread/kspread_canvas.cc #464553:464554 @@ -1069,8 +1069,13 @@ return; } + /* kdDebug() << "ev_PosX " << ev_PosX << endl; + kdDebug() << "ev_PosY " << ev_PosY << endl; + kdDebug() << "xOffset " << xOffset() << endl; + kdDebug() << "yOffset " << yOffset() << endl;*/ + //Check for a highlight range size grip and show the user a visual cue if found. - if (highlightRangeSizeGripAt(ev_PosX,ev_PosY - ypos)) + if (highlightRangeSizeGripAt(ev_PosX,ev_PosY)) { setCursor(Qt::CrossCursor); return; @@ -1329,7 +1334,7 @@ highlight->getRange(rg); KoRect visibleRect; - sheetAreaToVisibleRect(QRect(rg.startCol(),rg.startRow(), + sheetAreaToRect(QRect(rg.startCol(),rg.startRow(), rg.endCol()-rg.startCol()+1,rg.endRow()-rg.startRow()+1),visibleRect); double distFromSizeGripCorner=( sqrt( (visibleRect.right()-x) + @@ -4148,6 +4153,26 @@ } } +void KSpreadCanvas::sheetAreaToRect(const QRect& sheetArea, KoRect& rect) +{ + KSpreadSheet* sheet=activeSheet(); + + if ( sheet->layoutDirection()==KSpreadSheet::RightToLeft ) + { + rect.setLeft(sheet->dblColumnPos( sheetArea.right()+1 ) ); + rect.setRight(sheet->dblColumnPos( sheetArea.left() )); + } + else + { + rect.setLeft(sheet->dblColumnPos( sheetArea.left() )); + rect.setRight(sheet->dblColumnPos( sheetArea.right()+1 )); + } + + rect.setTop(sheet->dblRowPos(sheetArea.top())); + rect.setBottom(sheet->dblRowPos(sheetArea.bottom()+1)); + +} + void KSpreadCanvas::sheetAreaToVisibleRect( const QRect& sheetArea, KoRect& visibleRect ) { --- trunk/koffice/kspread/kspread_canvas.h #464553:464554 @@ -478,6 +478,15 @@ void sheetAreaToVisibleRect( const QRect& sheetArea, KoRect& visibleRect ); + /** + * Calculates the physical region on the canvas widget occupied by a range of cells on + * the currently active sheet. + * Unlike @see sheetAreaToVisibleRect , scrolling the view does not affect sheetAreaToRect. + * + * @param sheetArea The range of cells on the current sheet + * @param visibleRect This is set to the physical region occupied by the given range of cells + */ + void sheetAreaToRect( const QRect& sheetArea, KoRect& rect ); void retrieveMarkerInfo( const QRect &marker, const KoRect &viewRect, --- trunk/koffice/kspread/kspread_sheet.cc #464553:464554 @@ -8054,8 +8054,11 @@ ChartChild *ch = new ChartChild( doc(), this ); if ( ch->load( e ) ) insertChild( ch ); - else + else + { + ch->setDeleted(true); delete ch; + } } n = n.nextSibling(); @@ -8251,8 +8254,11 @@ if ( wiz && wiz->show()) insertChild( ch ); - else + else + { + ch->setDeleted(true); delete ch; + } } void KSpreadSheet::insertChild( const QRect& _rect, KoDocumentEntry& _e )