OK here is MergeCells.
It mostly works although there are still bugs in the backend. Merging cells of differing sizes is not fully debugged but this will get fixed soon enough. The GUI is a modeless dialog. See http://www.ph.unimelb.edu.au/~msevior/abiword/mergeCells.png After firing it up you click on merge left/ merge right/merge above/merge below to build up the collection of merged cells you want in the table. A single click on the merge button implements the command and you see the results instantly on the screen. You can move the cursor about the table with arrow keys with the dialog active and press undo to backout a change you don't want. You can also keep on typing etc the way you normally can with a Modeless dialog. I have committed stubs for Win, QNX and cocoa. Hopefully this won't break builds on other but it probabally will :-( I have put a lot of code into the xp layer including the auto updater that sets the sensitivity of the left/right/above/below buttons depending on whether you're in a table and there a room to merge into a different cell. BTW I think we should also make InsertTable Modeless because it is easy to do and all dialogs should be modeless unless there is a compelling reason for them not to be. Anyway enjoy Cell merging. Apart from being useful I find it quite fun :-) Cheers Martin Checking in text/fmt/xp/fp_TableContainer.cpp; /cvsroot/abi/src/text/fmt/xp/fp_TableContainer.cpp,v <-- fp_TableContainer.cppnew revision: 1.36; previous revision: 1.35 done Checking in text/fmt/xp/fv_View.cpp; /cvsroot/abi/src/text/fmt/xp/fv_View.cpp,v <-- fv_View.cpp new revision: 1.699; previous revision: 1.698 done Checking in text/fmt/xp/fv_View.h; /cvsroot/abi/src/text/fmt/xp/fv_View.h,v <-- fv_View.h new revision: 1.244; previous revision: 1.243 done Checking in text/fmt/xp/fv_View_cmd.cpp; /cvsroot/abi/src/text/fmt/xp/fv_View_cmd.cpp,v <-- fv_View_cmd.cpp new revision: 1.21; previous revision: 1.20 done Checking in text/fmt/xp/fv_View_protected.cpp; /cvsroot/abi/src/text/fmt/xp/fv_View_protected.cpp,v <-- fv_View_protected.cppnew revision: 1.24; previous revision: 1.23 done RCS file: /cvsroot/abi/src/wp/ap/cocoa/ap_CocoaDialog_MergeCells.h,v done Checking in wp/ap/cocoa/ap_CocoaDialog_MergeCells.h; /cvsroot/abi/src/wp/ap/cocoa/ap_CocoaDialog_MergeCells.h,v <-- ap_CocoaDialog_MergeCells.h initial revision: 1.1 done Checking in wp/ap/qnx/GNUmakefile.am; /cvsroot/abi/src/wp/ap/qnx/GNUmakefile.am,v <-- GNUmakefile.am new revision: 1.5; previous revision: 1.4 done Checking in wp/ap/qnx/Makefile; /cvsroot/abi/src/wp/ap/qnx/Makefile,v <-- Makefile new revision: 1.26; previous revision: 1.25 done RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_MergeCells.cpp,v done Checking in wp/ap/qnx/ap_QNXDialog_MergeCells.cpp; /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_MergeCells.cpp,v <-- ap_QNXDialog_MergeCells.cpp initial revision: 1.1 done RCS file: /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_MergeCells.h,v done Checking in wp/ap/qnx/ap_QNXDialog_MergeCells.h; /cvsroot/abi/src/wp/ap/qnx/ap_QNXDialog_MergeCells.h,v <-- ap_QNXDialog_MergeCells.h initial revision: 1.1 done Checking in wp/ap/unix/GNUmakefile.am; /cvsroot/abi/src/wp/ap/unix/GNUmakefile.am,v <-- GNUmakefile.am new revision: 1.21; previous revision: 1.20 done Checking in wp/ap/unix/Makefile; /cvsroot/abi/src/wp/ap/unix/Makefile,v <-- Makefile new revision: 1.66; previous revision: 1.65 done Checking in wp/ap/unix/ap_UnixDialog_All.h; /cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_All.h,v <-- ap_UnixDialog_All.h new revision: 1.81; previous revision: 1.80 done Checking in wp/ap/unix/ap_UnixDialog_Columns.h; /cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_Columns.h,v <-- ap_UnixDialog_Columns.h new revision: 1.11; previous revision: 1.10 done RCS file: /cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_MergeCells.cpp,v done Checking in wp/ap/unix/ap_UnixDialog_MergeCells.cpp; /cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_MergeCells.cpp,v <-- ap_UnixDialog_MergeCells.cpp initial revision: 1.1 done RCS file: /cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_MergeCells.h,v done Checking in wp/ap/unix/ap_UnixDialog_MergeCells.h; /cvsroot/abi/src/wp/ap/unix/ap_UnixDialog_MergeCells.h,v <-- ap_UnixDialog_MergeCells.h initial revision: 1.1 done Checking in wp/ap/win/Makefile; /cvsroot/abi/src/wp/ap/win/Makefile,v <-- Makefile new revision: 1.57; previous revision: 1.56 done RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_MergeCells.cpp,v done Checking in wp/ap/win/ap_Win32Dialog_MergeCells.cpp; /cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_MergeCells.cpp,v <-- ap_Win32Dialog_MergeCells.cpp initial revision: 1.1 done RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_MergeCells.h,v done Checking in wp/ap/win/ap_Win32Dialog_MergeCells.h; /cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_MergeCells.h,v <-- ap_Win32Dialog_MergeCells.h initial revision: 1.1 done Checking in wp/ap/xp/GNUmakefile.am; /cvsroot/abi/src/wp/ap/xp/GNUmakefile.am,v <-- GNUmakefile.am new revision: 1.22; previous revision: 1.21 done Checking in wp/ap/xp/Makefile; /cvsroot/abi/src/wp/ap/xp/Makefile,v <-- Makefile new revision: 1.78; previous revision: 1.77 done Checking in wp/ap/xp/ap_Dialog_Id.h; /cvsroot/abi/src/wp/ap/xp/ap_Dialog_Id.h,v <-- ap_Dialog_Id.h new revision: 1.35; previous revision: 1.34 done RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Dialog_MergeCells.cpp,v done Checking in wp/ap/xp/ap_Dialog_MergeCells.cpp; /cvsroot/abi/src/wp/ap/xp/ap_Dialog_MergeCells.cpp,v <-- ap_Dialog_MergeCells.cpp initial revision: 1.1 done RCS file: /cvsroot/abi/src/wp/ap/xp/ap_Dialog_MergeCells.h,v done Checking in wp/ap/xp/ap_Dialog_MergeCells.h; /cvsroot/abi/src/wp/ap/xp/ap_Dialog_MergeCells.h,v <-- ap_Dialog_MergeCells.h initial revision: 1.1 done Checking in wp/ap/xp/ap_EditMethods.cpp; /cvsroot/abi/src/wp/ap/xp/ap_EditMethods.cpp,v <-- ap_EditMethods.cpp new revision: 1.513; previous revision: 1.512 done Checking in wp/ap/xp/ap_Menu_ActionSet.cpp; /cvsroot/abi/src/wp/ap/xp/ap_Menu_ActionSet.cpp,v <-- ap_Menu_ActionSet.cpp new revision: 1.100; previous revision: 1.99 done Checking in wp/ap/xp/ap_String_Id.h; /cvsroot/abi/src/wp/ap/xp/ap_String_Id.h,v <-- ap_String_Id.h new revision: 1.171; previous revision: 1.170 done Checking in wp/ap/xp/ap_Toolbar_Icons_All.h; /cvsroot/abi/src/wp/ap/xp/ap_Toolbar_Icons_All.h,v <-- ap_Toolbar_Icons_All.h new revision: 1.44; previous revision: 1.43 done RCS file: /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeAbove.xpm,v done Checking in wp/ap/xp/ToolbarIcons/tb_MergeAbove.xpm; /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeAbove.xpm,v <-- tb_MergeAbove.xpm initial revision: 1.1 done RCS file: /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeBelow.xpm,v done Checking in wp/ap/xp/ToolbarIcons/tb_MergeBelow.xpm; /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeBelow.xpm,v <-- tb_MergeBelow.xpm initial revision: 1.1 done RCS file: /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeLeft.xpm,v done Checking in wp/ap/xp/ToolbarIcons/tb_MergeLeft.xpm; /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeLeft.xpm,v <-- tb_MergeLeft.xpminitial revision: 1.1 done RCS file: /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeRight.xpm,v done Checking in wp/ap/xp/ToolbarIcons/tb_MergeRight.xpm; /cvsroot/abi/src/wp/ap/xp/ToolbarIcons/tb_MergeRight.xpm,v <-- tb_MergeRight.xpm initial revision: 1.1 done
