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
Attachment:
signature.asc
Description: This is a digitally signed message part