Bugs i found recently

Tomaz Canabrava tcanabrava at kde.org
Tue Nov 5 08:17:46 UTC 2013


On Tue, Nov 5, 2013 at 10:28 AM, Dirk Hohndel <dirk at hohndel.org> wrote:

> On Tue, 2013-11-05 at 09:33 -0500, Tomaz Canabrava wrote:
>
> >
> >         > Some easy and straight forward ones:
> >         > * When pressing "ok" after edited a dive, all the open trips
> >         in
> >         >   the dive list gets folded. This is quite annoying, because
> >         it moves
> >         >   the scroll to.
> >
> >
> >         This seems to be caused by us calling DiveListView::reload()
> >         from
> >         MainWindow::refreshDisplay() - doing so loses the 'expanded'
> >         state of
> >         trips.
> >
> >         When playing around with this I found that we also always fell
> >         back to
> >         sorting by column 0 in descending order. I was able to fix
> >         that one, but
> >         got lost trying to figure out how to remember the expanded
> >         state for the
> >         trips.
> >
> >         We have a bit for that in our data structures, but when trying
> >         to
> >         connect to the expanded() signal of the TreeView in order to
> >         keep that
> >         bit in sync with what's displayed... I still have a lot to
> >         learn about
> >         Qt programming, I guess :-/
> >
> Tomaz - can you help with this one, too? We rebuild the divelist because
> editing may have changed things around - I'm actually not 100% sure
> that's even necessary, but in the past that has been the way we went
> because there were too many odd corner cases.
>
> So we have two directions we could go here...
> a) figure out how to maintain the 'expanded' state of trips across the
> rebuild
> b) figure out if we can avoid recreating the model and just make sure
> that it updates correctly
>
> >         > * Merge selected dives only merges two of tree selected. Now
> >         when i
> >         >   tested with 5 selected dives it merged the first tree of
> >         them.
> >
> >
> >         Urgs. This was a subtle bug. When looping over the dive list
> >         with
> >         for_each_dive we increment 'i' in every step - but if two
> >         dives get
> >         merged, then the indices of all following dives change (we
> >         have one
> >         fewer dive in the list after all).
> >
> >         Playing with that while testing showed that there still are
> >         bugs hidden
> >         in the dive merging code if you merge dives that shouldn't be
> >         merged.
> >         E.g. when the dives are not close together (I think we should
> >         just
> >         refuse to merge those), but there appears to also be an issue
> >         with
> >         getting the tank pressure in the samples correct. If the
> >         second dive is
> >         on a fresh tank (which basically means that most likely you
> >         shouldn't
> >         have merged these two dives, right?) then that isn't correctly
> >         reflected
> >         in the merged dive.
> >
> >         > * Unable to remove pressure information from a cylinder. The
> >         old value
> >         >   comes back.
> >         > * When rescaling the window and the different pains, the
> >         >   information-overlay can end up off-screen.
> >
> >
> >         Those two sound very much like something that Tomaz should
> >         look into :-)
> >
> >
> >
> >
> > Fixed. :)
>
> Thank you. Where can I pull the fix? :-)
> (not that I'm likely to do that right now - it's 12:30am and I just
> arrived in Palau after 24h of travel)
>
> >
> >         > And a couple of harder:
> >         > * multiple times i noted that the ui just went bad, and
> >         refused to
> >         >   switch between dives, or kept showing the divetrip info
> >         instead of the
> >         >   dive pain. This happened after working with the ui for 10+
> >         minutes.
> >
> >
> >         That's scary.
> >
> >         > * I noted that either via selecting multiple dives or some
> >         bug i
> >         >   accidentally edited the wrong dives, and wrote over other
> >         dives. This
> >         >   might be due to ui messing up the selections, or due to
> >         other bugs.
> >         >   A problem here is that the ui doesn't give you any
> >         feedback when you
> >         >   are actually editing multiple dives.
> >
> >
> >         Even more scary. That's the type of bugs I really want to get
> >         rid of
> >         before a release. I know this sucks, but can you try and
> >         create a
> >         sequence of steps that reproduces this? Ideally with the test
> >         dives so
> >         that the developers can reproduce it? Or you can do this with
> >         your dive
> >         file if you are welling to share that with us.
> >
> >         I stressed Subsurface with my medium sized XML file for a
> >         while (I have
> >         about 260 dives in it, but the file is large and complex as
> >         many of
> >         these dives have multiple dive computers) and haven't managed
> >         to get
> >         things out of sync in a way that corrupted data.
> >
> >         But I agree with you that we need visual feedback when editing
> >         multiple
> >         dives. So I implemented at least that.
> >
> >
> >
> > One thing that can help finding those bugs:
> >
> > Since we are working with Qt model system, we *must* not select or
> > deselect dives manually, but we need to ask the model to desselect it.
> > ( this is also true on the Gtk Version, not qt related, but model view
> > related. )
> >
> >
> > When one part of the code 'select_dive' and that doesn't update the
> > Model, the current selection for the user is what's painted on the
> > dive list, not what's correctly selected via code, so the user edits
> > something thinking that he's editing the *visual selection* whereas
> > he's really editing the newly dive created by add dive. :)
>
>
> > I'v found a couple of places that a 'select_dive' or 'unselect_dive'
> > is being used outside of the model control, and this is bad and can
> > cause this kind of wrong behavior.
> >
> >
>
> Is there a helper function we should call to make sure things stay in
> sync? That's usually the easiest way to ensure we have a consistent view
> everywhere.
> >
> >         > And one missing feature that we had in the gtk version:
> >         > * Ability to add gaschange and bookmark events to a dive.
> >
> >
> >         I vaguely remember having started to work at this at some
> >         point... but
> >         clearly nothing ever came of it. Something for the todo list.
> >
>
> I'm still trying to figure out what happened to the code that I wrote to
> implement this...
>
> /D
>

Dirk and All,

This two weeks before the beta, the only thing that I'm doing at nights is
Subsurface, so yes.. I'll try to help on every bug that I can put my hands
on.
:)

Tomaz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.hohndel.org/pipermail/subsurface/attachments/20131105/d448e209/attachment-0001.html>


More information about the subsurface mailing list