Table of contents
Introduction
I am Vaibhav Malik, a Google Summer Of Code contributor and developer at Inkscape. In this blog, I've summarized my work during the final week of the Google Summer Of Code 2023.
Aug 14
Being the concluding week of the GSoC 2023 program, my primary emphasis was directed toward ensuring the quality of the code I deliver. I initiated the process of transitioning from pointer to reference types during the past weekend, and I have carried forward the same objective into today's work as well.
Aug 15
This morning, I completed the transition from pointer types to reference types, and subsequently, I delved into addressing the remaining suggestions provided by my fellow developers on my merge request. Following that, I proceeded to convert all the toolbar subclasses to final
classes, given that there was no practical usage of them as base classes.
Having designated all the toolbar subclasses as final classes, my focus shifted to implementing CSS improvements.
Aug 16
I commenced the day by seeking a resolution for the window's reluctance to size down the issue. Subsequently, at Tav's request, I undertook the removal of deprecated properties from the UI files that I had incorporated for the toolbar. Tav also furnished me with a Perl script designed to automate this process, thus minimizing the need for extensive manual intervention.
Aug 17
Today, I engaged in the refactoring of the ToolbarMenuButton widget, while simultaneously incorporating the go-down icon to the menu buttons.
Aug 18
I dedicated the entire day to brainstorming a solution for the window resize issue that arose due to the custom overflow handling in toolbars. Regrettably, I was unable to devise a definitive approach independently. Consequently, I reached out to Tav, Mikekov, and Daniel Boles, seeking their expertise and assistance.
Aug 19
Today, I wholeheartedly dedicated my efforts to resolving the window resize problem, approaching the task with unwavering focus and determination. My objective was to identify a solution for this issue as promptly as possible.
After studying the GTK+3 documentation and familiarizing myself with certain concepts related to forcibly resizing Gtk widgets, I devised a preliminary solution.
The approach entailed detecting the exit from full-screen mode by the window and triggering an action immediately afterwards. The action involved compelling the window to contract to a significantly smaller dimension, such as 100 x 100 pixels, accomplished through the invocation of set_size_request(100, 100)
to override the window's inherent size. Consequently, the toolbars would shrink to a width smaller than their native dimension, thereby facilitating the expansion of the window upon the user's exit from full-screen mode.
Subsequently, my attention shifted to addressing the issue of widget overlap within the toolbars once the execution of the resize_handler
was concluded and the size allocation cycle orchestrated by GTK was finalized.
I managed to achieve a partial resolution to the problem by associating a Glib::signal_idle signal with the toolbar using a connect_once approach. This signal executed the resize_handler once more, utilizing the same allocation as previously, with the anticipation that it would effectively address the issue of overlapping children.
While this solution didn't comprehensively resolve all the challenges tied to overlapping widgets, it did offer a measure of improvement. In the days ahead, I intend to identify more robust solutions to completely mitigate this problem, and subsequently integrate them into the codebase for a comprehensive fix.
Conclusion
As the twelfth week of GSoC 2023 draws to a close, it's important to recognize that this isn't the culmination of the journey, but rather a stepping stone towards the bigger picture. The challenges encountered and progress made during this week serve as a testament to the dedication and effort invested in the project. Heartfelt gratitude goes out to the Inkscape community for their unwavering support, guidance, and collaboration, which have been invaluable in navigating these complexities. Looking forward, there's much more to explore, learn, and contribute, and I eagerly anticipate remaining actively engaged with the community in the days that lie ahead. Thanks for reading.