Development/EasyHacks/Completed

Completed Easy Hacks from Bugzilla
(click link for further details) Open this query in Bugzilla

Add editor settings line to each source file
Background: Both vi and Emacs can read editor config from individual files. Would be cool to add that to most of the source files. Task is to write a script that does it, not actually send a patch.

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */

[ ... all the file's content ... ]

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Skills: Write a Perl/Python script that adds stuff to files of a certain type.

Completed: Script by Jesse Adelman, ran by spaetz, pushed by meeks(?) (and others?), 2010-10-14T20:01:18

Pretty print the configure help options with AS_HELP_STRING
Background: The "inner" configure.in (rawbuild/configure.in or clone/bootstrap/configure.in) has a lot of options, and sometimes tangled indentation when using ./configure --help. AS_HELP_STRING is a autoconf macro to make it easy to get nice indentation in the help output.

Skills: autoconf syntax

Completed: arranna, 2010-11-03T14:19:02

Remove ineffectual emacs modeline remnants
If you find emacs modeline comments (e.g. ) in the middle of a file (i.e. not at the very top) - elide it.

UPDATE: patch sent by spaetz on Oct 29 2010. Committed.

Completed: spaetz, 2010-10-29T06:45:51

Simple LibreOffice Lint tool to detect silly errors
Background: There are a number of gotchas that are common in the LibreOffice source  code, and it would be great (while fixing these) to ensure that they do  not happen again. As an example running:

bin/g grep 'String( RTL_CONSTASCII_STRINGPARAM' | grep \.cxx

Should show you lots of cases where the 'String' constructor is broken (it is  ok for ByteString) - we need to fix all of these to use the correct  (RTL_CONSTASCII_USTRINGPARAM) macro instead - but it would be  great to have a trivial lint tool to run the grep, and parse the output  we can run forever more when merging new patches.

Caolan solved this specific issue another way in the code 

Skills: perl or python, basic C++ / common-sense

Use new SAL_N_ELEMENTS macro
Background: In many places in the code a fixed array size is hard-coded. This is both buggy and unnecessary - it is easy to calculate this at compiletime  with a macro: eg. char *string_array[] = { "hello", "world" }; for (int i = 0; i < 2; i++) // broken style for (int i = 0; i < sizeof(string_array)/sizeof(string_array[0]); i++) // old style for (int i = 0; i < SAL_N_ELEMENTS(string_array); i++) // best style

We should grep for all uses of 'sizeof' - and replace suitable 'old style'  ones with the new macro to clean them up. Please note that this may require including sal/macros.h in a file that uses this - since it  is not commonly included (sadly).

Skills: grep 'sizeof.*\[' simple code editing, compilation

Remove unhelpful File.hxx macros
Background: sal/inc/osl/file.hxx includes several #defines that are not namespaced eg. #define OpenFlag_Read osl_File_OpenFlag_Read. These should be replaced with their equivalents across the codebase, and the defines removed.

Skills: grep, simple code editing

Completed: Andy Holder, 2010-12-13

Remove bogus macros that expand to empty string
Background: There are several macros defined in the  solar.h file that expand to empty string. Two such examples are __EXPORT and __FAR_DATA. Both are used throughout the code base but they don't add any value. Let's remove them. Perhaps __READONLY_DATA can be replaced with plain const too. Skills: grep, simple editing

Use RTL_CONSTASCII_USTRINGPARAM macro
Background: In many places in the code a OUString object is created from a string  literal. An optimization available is to pass in the length of the string, which can be computed at compile time with  RTL_CONSTASCII_USTRINGPARAM.

rtl::OUString aFoo(rtl::OUString::createFromAscii("foo")); //suboptimal rtl::OUString aFoo = rtl::OUString::createFromAscii("foo"); //suboptimal rtl::OUString aFoo(RTL_CONSTASCII_USTRINGPARAM("foo")); //best style and faster. rtl::OUString aFoo(rtl::OUString::createFromAscii(pPointer)); //not a string literal, leave it alone rtl::OUString aFoo(RTL_CONSTASCII_USTRINGPARAM(pPointer)); //wrong, not a string literal

Skills: grep 'createFromAscii' simple code editing, compilation

Completed: Multiple People, 2011-01-04

Replace suitable equalsAscii calls with equalsAsciiL
Background:  In many places in the code a OUString object is compared against a string   literal. An optimization available is to pass in the length of the string, which can be computed at compile time with RTL_CONSTASCII_STRINGPARAM. As a side note, equalsAsciiL compares in reverse order.

if (sFoo.equalsAscii("XXXXX")) //suboptimal if (sFoo.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("XXXXX"))); //optimal if (sFoo.equalsAscii(pPointer)) //not a string literal, leave it alone if (sFoo.equalsAscii(RTL_CONSTASCII_STRINGPARAM("XXXXX"))); //wrong, you missed a trailing 'L'

Skills: grep 'equalsAscii' simple code editing, compilation - `grep 'equalsAscii\s*(\s*".*"\s*)' * -R`

Completed: Thomas Arnhold, 2011-01-28

Remove double line spacing
Background: For unknown reasons, some modules use double line spacing (ie. every other line is a newline) - making the code hard to read, and this is simply bad practice and perhaps the result of some failed unix/windows conversion. An example is: filter/source/xmlfilteradaptor/genericfilter.cxx (Fixed). It would be great to fix this, and/or find any other instances of this problem and fix these. Clearly, it is fine to have blank lines in normal source files, this applies only to these (perhaps very few) instances of mis-conversion where the majority of the file is erroneously double line spaced.

Skills: simple editing, search for the problem.

A list of suspicious files can be found here.

Completed: several people, 2011-02-08

change make test to make check all over the place
Background: Align !LibreOffice makefile targets with FLOSS conventions.

Skills: grep, Makefile reading

Completed: 2011-02-09

remove obsolete gjc aot compilation
Background: It used to make sense to use gcj to do ahead of time compilation, however this unfortunately (given the state of gcj) introduces some bugs, and it is no longer used. It would be great to rip the --enablegcj-aot option from configure.in, the JAVAAOTCOMPILER from set_soenv.in and from its usages in the build.

Skills: shell, autotools, make

Completed: 2011-02-12

Remove xine backend
Background: Under Unix the video/audio backend is gstreamer. There is an unused prototype xine one in avmedia/source/xine/ which can be removed. Search for xine in avmedia/prj/build.lst as well to remove the xine dir from the list of dirs to build

Skills: none

Completed: Julien Nabet, 2011-02-12

Migrate module descriptions to our wiki
Background: We need to extract and complete the module overview that was created by  external volunteers, and then imported to the Oracle wiki. We should take   this version before Sun edits, and migrate the module descriptions to  the new code structure on this page

Skills: cut/paste of wiki markup, good taste

Completed: Christoph Herzog, 2011-02-15

Remove effectively-unused SVX_LIGHT macro
Background: There once was a conditional compile mode called SVX_LIGHT, with preprocessor macros of that name mostly in the svx module. This is long since dead and unused, and the #ifdef SVX_LIGHT / #endif pairs can be elided - please don't kill the code bracketed by this, only the #ifdef / #endif pair!

Skills: ability to identify and remove matching #ifdef / #endif pairs

Completed : Xavier Alt, 2011-03-22

Strip include guards in idl files
Background: the idl files have an include mecanism similar to the one use in C++. A lot of idl files have #ifndef's around each include... which doesn't make sense as long as there is an #ifndef for each file (as this is the case). The task is to remove all those include guards to make to idl files easier to read. TextColumns.idl is a good example of those horrible things. The strip-guards script could be used to perform the task though it will probably need to be improved.

Skills: Perl, simple C++ programming

Completed : Julien Nabet, 2011-04-02

expunge duplicate enumerations in vcl
Background:  VCL used to have a separate 'psprint' module (namespace psp) to   implement printing. This was merged with vcl, but lots of the  enumerations duplicated between the two remain, along with mapping   functions between them; see vcl/inc/vcl/fontmanager.hxx cf. font  enumerations in vcl/inc/vcl/vclenum.hxx and vcl/inc/sft.hxx and   duplicate mapping functions like ToFontFamily. It would be good to dung  all of these out keeping the original vcl/ (ie. not psp::)  enumerations.

Skills: reading, cleanup, compiling.

Completed: by Christina Rossmanith on 2011-04-11

remove all the bogus comments lying around
Background: Almost no-one believed that revision control works, so we see things like: /* -04.12.00 16:26 and and // --> OD 2008-01-08 #newlistlevelattrs#
 * 1) include  //CHINA001

Skills: identifying bogus comments, and removing them.

Hints: Bash line: git grep -nE " #[^i][0-9]+#" | ( while read f; do file=$(echo "$f" | cut -d':' -f1) ; line=$(echo "$f" | cut -d':' -f2) ; emacs "+"$line > -fh "$file"; done )

References:


 * http://nabble.documentfoundation.org/Easy-Hack-completed-All-bogus-comments-removed-td2820287.html

Completed: Júlio Hoffimann 2011-04-14

VBA support add support for Worksheets.Copy
Background: Libreoffice's vba compatability Worksheet object is missing ( amongst  other methods/properties ) the 'Copy' method. ( see  for associated issue )  It should be quite easy to add support for this method. You just need to update the existing idl (oovbaapi/ooo/vba/excel/XWorksheets.idl ) and  provide the associated implementation in  sc/source/ui/vba/vbaworksheets.[ch]xx. Required signature and some basic info about the Copy method is available from  http://msdn.microsoft.com/en-us/library/bb212205%28v=office.12%29.aspx

Skills: Building, C++, some UNO, knowledge of Libreoffice uno API, some knowledge of VBA/Excel api

Completed: Markus Mohrhard, 18/04/2011

Add visibility markup to all component_get* functions
Background: We're in transition from one build system to another. In the old one we typically filtered out symbols we didn't want to export with a mix of  visibility markup and map files. In the new one we solely use visibility markup. But we keep forgetting to convert some vital functions over to the new markup mechanism, causing loads of pain and suffering. So we should just move them all over in one fell swoop.

Bottom line is that: component_getFactory and  component_getImplementationEnvironment need to be annotated with  SAL_DLLPUBLIC_EXPORT, e.g. see  this commit for an example commit template to follow.

Skills: grep

Completed: Julien Nabet 21/04/2011

remove cruft from perl scripts
Background:  Our perl installer script: solenv/bin/make_installer.pl has lots of   legacy features that can be removed - eg. sending mails about its   progress: solenv/bin/modules/installer/mail.pm needs removing - we don't   want to send mail people during the build.

Skills: perl Completed: Samuel Cantrell 2011-06-13

remove non-compiled / dead code
Background: There is tons of this lying around in the code. Apparently some developers don't believe in revision control. In calc, much un-used code is just commented out like this: //UNUSED2008-05         if (nCount==1) //UNUSED2008-05             return 0;                               // leer all of this needs removing.

cppcheck can help you to identify such areas.

Skills: ability to identify and remove large sections of commented out / compiled out code

Completed: Júlio Hoffimann 2011-07-18

Remove libegg fluff
Background: The systray icon: sfx2/source/appl/shutdowniconunx.cxx currently uses a  cut/pasted 'libegg' that is included in the LibreOffice toplevel. Instead it should switch to using the GtkStatusIcon API, which is very similar, more capable, and reduces our library count by one. We should then remove libegg. Extra bonus points for checking that we do indeed have the required gtk+ version inside the module at run-time.

Skills: build, simple C++, GNOME

Completed: Christopher Backhouse - 2010-12-06

don't ship 150 duplicate placeholder icons
Background: Currently, we ship tons of 'broken-icon' icons - duplicated many times  in each icon theme. These are just designed to show visibly in the UI if they are used in error. This is a pointless waste of memory, disk, mirror bandwidth etc. Instead - we should have a single missing  icon icon. We should hack the icon loading to fall back to this, checkout: vcl/source/gdi/impimagetree.cxx - instrument the methods  there, define a name for that icon, and hard-code a fallback here.

Then we need to remove all the duplicate missing icon images from the default_images tree; ace_dent can help with that piece.

Skills: build, simple C++

Completed: Joachim Trémouroux - 2010-11-23

Copy configure options
Background: There is currently configure options which is only in  build/configure.in. Those options shall be also in bootstrap/configure.in so that it would be possible to drop the build  repository out of building process. See current configure options in bootstrap/configure.in.

Skills: text editor, autoconf syntax, patience

Obsolete / Complete: 2011-02-07

un-screw-up accessible icon code-paths & shrink theme files
Background: Whomever added the accessibility icon theming code created a limited solution of un-necessary complexity. Then real theming was introduced. We should remove the un-necessary !BmpColorMode code paths. We should also remove the redundant high-contrast icons from all the themes (retaining the discrete high-contrast theme itself of course) - that means moving all the lch_ and sch_ variants in default_images/res/commandimagelist (and similar icons) into a new directory in ooo_custom_images - and stripping all mention of them from the .src and .hrc files. Any coding effort can be supported by ace_dent, who has experience of preparing icon themes.

Benefit analysis: Saves ~10MB from the installed size. Removes ~3,300 files per icon theme, that will translate to faster loading times. Simplifies and shrinks code and will further aid optimizing icon themes.

Done by: Joseph Powers, Sebastian Spaeth, & Caolán McNamara (who was nice enough to fix our bugs)

Completed: 2010-11-22

build with strict-aliasing
Background: GCC compiler developers believe we can get performance benefits from  gcc's -fstrict-aliasing flag. Finishing the work already started on this and merging it would be useful (see  ). This entails identifying and fixing sites that generate related warnings.

Completed: 2010-01-17 (Note, only for gcc > 4.5.1 and non stlport)

Blinking caret for the new visual formula editor
Background: The caret in the visual formula editor is currently drawn as a solid  line, it would be great if it could blink like a normal caret does in a  textbox. You'll need to add a timer to SmGraphicsWindow and modify SmGraphicsWindow::Paint. Notice, that you should mainly touch code that runs when IsInlineEditEnabled is true.

Skills: Building, C++

Completed: luked, 2010-11-15T18:46:22

Draw solid line under current line in the new visual formula editor
Background: The line in which the caret is placed in the editor should be  underlined, to emphasize exactly where the caret is placed (kind of like  MathType). For this the SmCaretDrawingVisitor should be modified. Notice that finding the topmost node if a line is not trivial, see SmCursor::FindTopMostNodeInLine.

Skills: Building, C++

Completed: luked, 2010-11-17T22:07:24

Don't draw caret when visual formula editor looses focus
Background: Currently the visual formula editor keeps drawing the caret, even when it has lost focus. This is not pretty, it should be fixable in SmGraphicsWindow, by repainting when focus is lost, and not drawing caret when the editor doesn't have focus. Notice, that you should mainly touch code that runs when IsInlineEditEnabled is true.

Skills: Building, C++


 * Patch sent to mailing list - Luked

Completed: Luked, 2010-11-02T21:18:44

Remove VOS library
Background: The VOS library has been obsolete for many years, but still lingers on in the codebase. Patches are in patches/dev300/vosremoval-* to remove it altogether, simplifying the code and speeding start-up. These need re-applying and building and some QA doing to test them. One fewer library means less seeking / reading at startup, and less obsolete code lying around.

Skills: build, C++

Completed: Norbert Thiebaud, 2010-10-24T08:57:30

Change Sheet copy process
Background: Currently the right click select Move/Copy sheet dialog allows for coping whole sheets. On exit the "new" sheet is named with _#, where _# is a underscore and number added by LibO to the original sheet name. The dialog needs to either have, or open based on the "Copy" box, text entry boxes added based on the number of sheets highlighted for copy. The text box could be pre-populated with the suggested name as the current "Rename sheet" dialog has.

Skills: C++, building, debugging

Completed: jooste, 2010-12-15T22:07:30

Leftover data after an Undo operation
Background: There is a currently a bug that leaves unwarranted data in cells during an undo operation. The undo record is likely getting incorrectly stored during the paste, which causes the undo to do the wrong thing. See   for more information and a  simple test case.

Skills: C++, building, debugging

Completed: jooste, 2010-12-21T20:15:00

fix --help parameters
Background: The soffice binary should accept a -help argument, yet it apparently does not (code in desktop/). Possibly this is an artifact of the unix quickstarter, since soffice.bin -help does work. It would be lovely to make --help style arguments work as well.

Skills: build, C++

Completed: 2011-01-04

accelerate Perl installer builder
Background: For now we use solenv/bin/make_installer.pl, with Perl modules in solenv/bin/modules/installer, to do handle the production of an installer or data to go into packages. Unfortunately it is slow even on a fast machine.


 * Substituted spawning of processes for find and chmod with built-in perl routines

Skills: Perl, building

Improve Autocorrect capitalize first word in sentence
Background: We have an autocorrect feature to auto-capitalize the first word in a sentence.We should add a rule that protocol strings like http: don't get capitalized. i.e http: turning into Http: is ugly.

The code for this is (I think) editeng/source/misc/svxacorr.cxx SvxAutoCorrect::FnCptlSttSntnc. A list of protocols to auto-white list could be got with looping from INET_PROT_NOT_VALID to INET_PROT_END into INetURLObject::GetScheme of tools/inc/urlobj.hxx

(beuss 2011-02-21)

Skills: C++

Improve Autocorrect TWo initial capitals
Background: We have an autocorrect feature to fix two initial capitals, i.e TWo gets autocorrected to Two. We have a whitelist per-language for word that should not be fixed, e.g. MHz. But we should have an extra test to not fix the two-initial capitals if the word is considered correctly spelled by the spellchecking dictionary. There's nothing more annoying than having a correctly spelled word auto-corrected into an incorrectly spelled word.

So, see editeng/source/misc/svxacorr.cxx SvxAutoCorrect::FnCptlSttWrd. It currently only uses the !FindInWrdSttExceptList test. Grep for SvxGetSpellChecker and "xSpellAlt === xSpeller->spell( aWord, eLang, aEmptySeq );" for getting and using the spellchecker in editeng.

Skills: C++

Remove F_PI definition from solar.h
Background: There are two different definitions of the Pi value in the code. The one defined in solar.h needs to be removed as it leads to precision errors. The task consist in removing the definitions from https://opengrok.libreoffice.org/xref/libs-gui/tools/inc/tools/solar.h and use the ones from https://opengrok.libreoffice.org/xref/libs-gui/basegfx/inc/basegfx/numeric/ftools.hxx everywhere. Other F_PI* and F_2PI constants are also defined in ftools.hxx. They could be removed.

Skills: building, simple C++ programming

Completed: Michael Lefevre, 2011/03/15

Improve git pre-commit hook
Background: When you commit a new file to the repositories, a git hook is executed that checks for various patterns we do not want to see in the repository, like tabs instead of spaces at the beginning of lines, etc. One of them is a check for trailing whitespace (see the 'bootstrap' repo, file git-hooks/pre-commit, function check_and_fix_whitespace). This one should be limited to (c|cpp|cxx|h|hrc|hxx|idl|inl|java|map|mk|MK|pmk|pl|pm|sdi|sh|src|tab|xcu|xml) only - instead of running the diff against everything, it should go file by file, using "git diff-index --cached --name-only $against", similarly to the check for the leading tabs.

Completed: Norbert Thiebaud, 2011/06/22

De-Java-ise flat XML export
Background: LibreOffice provides a way to turn an ODF (.zip) file to and from a  flat XML file. This of course involves base64 encoding embedded binaries like images (etc.) but is fairly trivial, and of course this makes it  possible to use XSLT filters. Unfortunately, this is written in Java, and as such causes deployment and performance problems. It would be great to re-write the flat-xml export / import to be just plain C -  currently they are written as almost no-op XSLT filters (in  filter/source/odfflatxml/) - and the XSLT framework is in  (filter/source/xsltfilter) it would be great to convert some of the  latter's .java files to C++, and special case flat XML import/export.

Completed: Peter Jentsch, 2011-01-10

Count characters without whitespace in the Writer statistics
Background: It seems useful (eg. for translators) to show also the number of characters without counting whitespace (spaces, tabs, and carriage returns) in the statistics page (in addition to what is already there). More info in. It is quite easy to achieve, because the functionality is already there, it is just necessary to not include whitespace to the count.

Completed: cbosdo, 2010-10-27T12:40:35

List all the contributors on a web page
Background: All the contributors need to be automatically thanked on some web page. Not only developers, but also localizing, QA and helping people. The idea here is to collect some data from git repos, wiki history, mailing  lists, forums (others?) and present them nicely. Extracting from git is easy, but some automated way needs to be set up for the wiki, and the  exact data to show needs to be determined for the forums /  mailing-lists. For git, gitdm and the configuration  scripts here can be used.

Skills: scripts

Assigned: I am working on this (spaetz)

Add a contributor page
The current contributor credit list is very hard to find. In the Help menu, select About... and in the about dialog, type CTRL-S-D-T to watch the credits  fly by. The code is in libs-core/sfx2/.../about.cxx. This easter egg is pretty hard to discover and the display flickers a lot. One task would be to add a "contributor" button to that dialog and have a window pop up  that presents the contributors in a nicer layout or so. It would be like the Help->License info one - cf. sfx2/source/appl/appserv.cxx - that would load an ODF document containing the output of http://libreoffice.org/credits.html - so that  we can ship that with the binaries. We could whack that in readlicense_oo - cf. LICENSE.odt and add a build of d.lst goodness, and some scp2 to get it into the install.

Skills: Building, C++, creativity, design skills(?) Result: Help -> Credits uses Spaetz' nice work.

Remove obsolete BmpColorMode enum
Background: The vcl/inc/vcl/bitmap.hxx BmpColorMode enumeration was primarily used  for rendering high-contrast icons manually. These code paths are now removed, but there are still some vestigal uses. These should be removed, and the associated IMAGE_DRAW_MONOCHROME_* enumerations also  expunged from the code.

Skills: C++, building

Completed: mordocai, 2011-2-1

Remove obsolete Hyperlink Bar
Background: There is a toolbar for inserting hyperlinks that's rarely used, but  continues to occupy the precious menu space (View - Toolbar - Hyperlink  Bar). This toolbar has been carried over from the ancient StarOffice time, and its design clearly shows its age. Let's remove this toolbar and all code associated with this cruft.

The Hyperlink Bar is implemented in the  SvxHyperlinkDlg class. It's a good idea to remove this class as well as other classes used only by SvxHyperlinkDlg (such as HyperCombo  and HyperFixedText).

Note that, this class is instantiated indirectly via SvxHyperlinkDlgWrapper class, which  should be removed also upon removal of SvxHyperlinkDlg. Each application modules (sc, sw, and sd) contain reference to  SvxHyperlinkDlgWrapper in order to register this dialog when loading the  application. All of there references need to be removed as well.

Internally, each menu item corresponds with a "command", which is identified in two  ways. One is by a numeric ID which is typically defined as a macro, and the other is by a UNO command name, prefixed by ".uno:". The Hyperlink Bar menu item is associated with the numerical ID  SID_HYPERLINK_INSERT, and also with the UNO command  .uno:InsertHyperlink. Use this knowledge when looking for the code to remove throughout the code base.

Also note that there is at least  one place where this command is referenced by its hard-coded numerical  value. The internal value of SID_HYPERLINK_INSERT is 10360, so, look out for some odd places where this command may be referenced by the  hard-coded value of 10360.

Modules to look in are:


 * officecfg/registry/data/org/openoffice/Office/UI/GenericCommands.xcu - command definition
 * sc - calc
 * sd - impress and draw
 * sw - writer
 * svx - implementation for the Hyperlink Bar.
 * framework (and probably sfx2?) - misc framework stuff.
 * helpcontent2 - on-line help

Skills: C++, build, code analysis

Completed by: Alfonso Eusebio - 11/Feb/2011

add slide thumbnails to HTML export
Background: for a long time we've had a nice slide-gallery feature for HTML export lurking around in patches/test/sd-export-html-thumbnails.diff - it needs resurrecting, applying, testing, whatever polish we can give it, and including.

Skills: building, simple C++, ability to grok HTML.

Completed by: Julien Nabet - 25/Mar/2011

Improve order of filters in the Open dialog
The order of filters in the Open dialog is more or less arbitrary, and it would make sense to order them better; eg. group the MS filters together, and sort them by the version (probably leading by the newer formats), etc.

Skills: C++, build, code analysis

Completed by: Matus Kukan - 2011-04-06

Export OLE objects as PDF / graphics
Background: It is not currently possible to export eg. a chart by itself as a  PDF or PNG - but this would be a nice feature. We need to add a context menu to OLE2 object frames, to allow this please see  for a few sketchy  code pointers to the UI side. Some bug fixes remain here, pwrt. expansion to calc and elsewhere.

Skills: building, C++, code reading, patience

Leave / return cursor to original position after Find & Replace All
Background: An oft requested improvement (since 2002!) for OpenOffice.org. After executing a "replace all", the cursor should be left where it was before before the "replace all", rather than at the position of the last replacement. More info at.

Completed: mattias, 2010-12-02T00:49:00

Removal of duplicated template classes in Calc filter code
Background:  Calc filter code contains several template classes that should be   replaced with boost equivalent, because having own template classes when   boost has perfectly usable alternatives unnecessarily increase the   learning curve for new hackers.

The following classes should be replaced with boost's equivalent:


 * ScfNoCopy -&gt; boost::noncopyable (done)
 * ScfNoInstance -&gt; boost::noncopyable (done)
 * ScfRef -&gt; boost::intrusive_ptr or boost::shared_ptr (done)
 * ScfRefMap  -&gt; boost::ptr_map or std::map (done)
 * ScfDelList -&gt; boost::ptr_list (?) (done)

which are all declared in sc/source/filter/inc/ftools.hxx.

Skills: building, hacking in C++, boost, smart pointers

Completed: Nigel Hawkins hfinished removal of ScfNoCopy, ScfNoInstance, ScfRef, and ScfDelList, and Kohei Yoshida did most of ScfRefMap.

Allow one autofilter per sheet, not per document
Background: Calc only allows one automatic autofilter per document. Let's say you have auto-filter on Sheet1. As soon as you enter another auto-filter on Sheet2, the first filter on Sheet1 disappears. The workaround is to manually define range via Data > Range before setting the autofilter,  but that's not optimal from usability's POV. Calc should allow one automatic autofilter per sheet. This also affects interoperability with Excel, since Excel allows one autofilter per sheet.

Code pointers: ScDocShell::GetDBData needs to be modified to allow multiple anonymous DB ranges for handling unnamed ranges. Let's first allow one anonymous DB range per sheet which makes handling of importing and exporting with Excel documents easier. Once that's in place, we can probably use that new functionality in the Excel import and export to map Excel's builtin ranges to the new multi-anonymous ranges.

Skills: building, debugging, medium C++, ability to read and understand C++ code.

References:
 * https://bugzilla.novell.com/show_bug.cgi?id=228260
 * https://bugzilla.novell.com/show_bug.cgi?id=228260

Completed: by Markus Mohrhard on 2011-03-30