Here a copy of the mail I send to Cedric Bosdonnat… forgot to add the list as "Cc:".
Hello Thanks you for asking me… When you select a cell in Writer the selection type is a mix of nsSelectionType::SEL_TBL_CELLS, nsSelectionType::SEL_TBL and nsSelectionType::SEL_TXT. So when the lcl_CreateEmptyItemSet function is called directly with the nSelectionType (from rWrtShell.GetSelectionType()) the if statement "nSelectionType == nsSelectionType::SEL_TBL" is false. So in the SwFormatClipboard::Copy function there is another statement : ________________________________________________________________________ if( nSelectionType & nsSelectionType::SEL_TBL_CELLS )//only copy table attributes if really cells are selected (not only text in tables) { m_pTableItemSet = lcl_CreateEmptyItemSet( nsSelectionType::SEL_TBL, rPool ); lcl_getTableAttributes( *m_pTableItemSet, rWrtShell ); } ________________________________________________________________________ That call lcl_CreateEmptyItemSet with just nsSelectionType::SEL_TBL if the real selection type contain nsSelectionType::SEL_TBL_CELLS. I found this way of doing a bit confusing and as tables parameters are handle separately in the whole format paintbrush code I thought that replacing : ________________________________________________________________________ m_pTableItemSet = lcl_CreateEmptyItemSet( nsSelectionType::SEL_TBL, rPool ); ________________________________________________________________________ by : ________________________________________________________________________ m_pTableItemSet = new SfxItemSet(rPool, SID_ATTR_BORDER_INNER, SID_ATTR_BORDER_SHADOW, //SID_ATTR_BORDER_OUTER is inbetween RES_BACKGROUND, RES_SHADOW, //RES_BOX is inbetween SID_ATTR_BRUSH_ROW, SID_ATTR_BRUSH_TABLE, RES_BREAK, RES_BREAK, RES_PAGEDESC, RES_PAGEDESC, RES_LAYOUT_SPLIT, RES_LAYOUT_SPLIT, RES_ROW_SPLIT, RES_ROW_SPLIT, RES_KEEP, RES_KEEP, RES_FRAMEDIR, RES_FRAMEDIR, FN_PARAM_TABLE_HEADLINE, FN_PARAM_TABLE_HEADLINE, FN_TABLE_BOX_TEXTORIENTATION, FN_TABLE_BOX_TEXTORIENTATION, FN_TABLE_SET_VERT_ALIGN, FN_TABLE_SET_VERT_ALIGN, 0); ________________________________________________________________________ was not irrelevant. After this replacement was made there where no reasons keeping the "nSelectionType == nsSelectionType::SEL_TBL" block in the lcl_CreateEmptyItemSet function. I hope I answered your question. BEWARE : this patch need the first patch 0001-add-GetCurParAttr-and-GetPaMParAttr-in-SwEditShell from my preview mail http://lists.freedesktop.org/archives/libreoffice/2012-March/028157.html Regards Maxime de Roucy -- Maxime de Roucy Groupe LINAGORA - OSSA 80 rue Roque de Fillol 92800 PUTEAUX Tel. : 0 810 251 251 Le jeudi 15 mars 2012 à 17:06 +0100, Cedric Bosdonnat a écrit : > Hi Maxime, > > On Wed, 2012-03-14 at 16:50 +0100, Maxime de Roucy wrote: > > Here is some new patchs on the format clipboard. The first just add some > > comment in the formatclipboard.hxx file. The second one depend on > > modifications I made in the previous patch > > 0001-add-GetCurParAttr-and-GetPaMParAttr-in-SwEditShell.patch which is > > itself dependant of the patch > > 0004-SwEditShell-use-of-the-STL-swap-function.patch which is waiting for > > moderator approval to be published in the mailing list. > > I pushed the first patch to the master branch... but there is something > weird in the second patch. Why did you remove the case where > nSelectionType is a table selection? > > I'll push the second patch once that question is clarified. > > -- > Cedric >
signature.asc
Description: This is a digitally signed message part
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice