My tabbrowser work has now reached a stage where a tab linked to an arbitrary panel can be added to a conversation window, moved around, etc with almost no errors. Context menus and nearly everything else also work fine. I only ran into one pesky error with the zoom manager, caused when the tab is opened in a new window –
this.mCurrentBrowser is undefined because the tab doesn’t have one. Debugging that will be a job for tomorrow!
The code has been pushed to the
awesometab-experimental branch on my repo. Also I was a bit bored and recorded a demonstration video – here.
Meanwhile, I got default prefs working with my Pastebinner add-on thanks to the good folks at #instantbird.
– Fix the bug mentioned above.
– A lot of cleanup has to be done so that the code is worthy of a check-in.
– Mic suggested I start collecting data to test my sorting algorithm later on – I want to write an add-on for this.
– I need to submit my add-ons to AIO.
I forgot to write up yesterday’s report, so this post will cover what I’ve done the past two days.
- I decided to scrap the idea of having a generic tab to be extended, since tabbrowser-tab has very little conversation-specific code anyway. Now, tabs themselves are fully transparent and there is no need for them to be extended.
- The conversation binding now extends tabPanel – a generic panel to be added to tabbrowser. Future UIs that want to open in a tab should also extend tabPanel.
- I moved conversation specific menuitems from tabbrowser to the conversation binding. These are now “injected” into the context menu when it is shown.
- Code for the above has been pushed (except for the last bit which is awaiting review) to my repo.
- Aside from this, I worked on an addon – Pastebinner – which pushes any message more than 10 lines long to a pastebin and sends the link as a message. It also adds a “/paste” command using which files can be pastebin’d and sent. I suspect this will be useful throughout GSoC.
I wasn’t at home most of the day, but I did get some time to work after dinner.
- I was able to start over work on moving conversation specific code out of tabbrowser.
- Here‘s a diff of progress so far.
- Here is a discussion on this on #instantbird.
Today I experimented with the abstraction code, ending up with more breakage than functionality.
- I worked on replacing
linkedConversation is mostly used in a way that doesn’t depend on it actually being a conversation.
- I moved the tab context menu code to the
tabbrowser-tab binding. This worked, but didn’t yield very good results. Tab images got a bit broken and there were some mouse event issues. I decided to move it back to
tabbrowser, with the idea that generic tabs which wanted to implement their own context menus could do so by setting unsetting
mousethrough="always" – this would show the tab’s particular context menu rather than
- I added in a
aTabClassName parameter to
addGenericTab to allow tab classes other than tabbrowser-tab.
Progress was slow again because I had to decipher a lot of vague/complicated code (e.g.
this.parentNode.parentNode.parentNode.parentNode.foo(this)) and wasn’t able to open DOM Inspector until Mook_as mentioned the
-inspector command line flag (thanks!).
To-do: make tabbrowser-tab easily extendable and further work on tabtest.xml to be a full proof-of-concept for adding non-conversation tabs.