first, congratulations on the patch. good idea!
concerning that "mess". some time ago, i've written to the mailing list a proposal for new code / contributing conventions for scribus.
it has been "officially" ignored, but it led the team to write down a clear list of code conventions that simply cemented the current rules.
(the page is not official yet, so i don't want to publish the link in here. i can share it with you in private.)
why i'm writing about it, now?
i'd like to stress one rule that i think applies to your patch: if a patch adds more than 8 lines in a function, the author should think about refactoring that part of code (and create a new function).
this should also apply to adding inline comments: if you feel the need for inline comments, you should refactor your code, use good names, and put the comment in the doc of the function (if it's still needed).
i had a look at the code in mouseReleaseEvent and in my eyes, there are good changes that the big if following craig's "Drag selection performed here" comment (line 1146?) should get into its own function (onDragSelection()? what are the arguments? what will be the used as class variables? personally, i like to reduce the amount of side effects...).
if possible, the function should be further split... 8 to 10 lines is probably the optimal length for a function. 50 lines probably it's maximal length.
now, having said that, while having had a look at the code, i've noticed a "m_doc->m_Selection->count() == 0" in the big if on line 1147... i think that this is the reason why we cannot extend the current selection through a drag selection.
it's just a supposition: i don't know anything about that part of code and i haven't tried it out...
what do yo uthin?