Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package Setzer for openSUSE:Factory checked 
in at 2023-09-20 13:27:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/Setzer (Old)
 and      /work/SRC/openSUSE:Factory/.Setzer.new.16627 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "Setzer"

Wed Sep 20 13:27:48 2023 rev:3 rq:1112064 version:59

Changes:
--------
--- /work/SRC/openSUSE:Factory/Setzer/Setzer.changes    2023-09-08 
21:17:13.770091611 +0200
+++ /work/SRC/openSUSE:Factory/.Setzer.new.16627/Setzer.changes 2023-09-20 
13:29:31.931381811 +0200
@@ -1,0 +2,6 @@
+Sun Sep 17 12:47:00 UTC 2023 - Atri Bhattacharya <[email protected]>
+
+- Update to version 59:
+  * No release notes.
+
+-------------------------------------------------------------------

Old:
----
  Setzer-57.tar.gz

New:
----
  Setzer-59.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ Setzer.spec ++++++
--- /var/tmp/diff_new_pack.ewN7Eg/_old  2023-09-20 13:29:33.031421221 +0200
+++ /var/tmp/diff_new_pack.ewN7Eg/_new  2023-09-20 13:29:33.035421364 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           Setzer
-Version:        57
+Version:        59
 Release:        0
 Summary:        Simple yet full-featured LaTeX editor for GTK/GNOME
 License:        GPL-3.0-or-later

++++++ Setzer-57.tar.gz -> Setzer-59.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/data/org.cvfosammmm.Setzer.metainfo.xml.in 
new/Setzer-59/data/org.cvfosammmm.Setzer.metainfo.xml.in
--- old/Setzer-57/data/org.cvfosammmm.Setzer.metainfo.xml.in    2023-08-29 
15:41:32.000000000 +0200
+++ new/Setzer-59/data/org.cvfosammmm.Setzer.metainfo.xml.in    2023-09-09 
14:43:29.000000000 +0200
@@ -64,6 +64,16 @@
     </requires>
 
     <releases>
+        <release version="59" date="2023-9-9">
+            <description translatable="no">
+                <p>Bug fix</p>
+            </description>
+        </release>
+        <release version="58" date="2023-9-9">
+            <description translatable="no">
+                <p>Force light mode, ...</p>
+            </description>
+        </release>
         <release version="57" date="2023-8-29">
             <description translatable="no">
                 <p>Gtk4, ...</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/data/resources/style_gtk.css 
new/Setzer-59/data/resources/style_gtk.css
--- old/Setzer-57/data/resources/style_gtk.css  2023-08-29 15:41:32.000000000 
+0200
+++ new/Setzer-59/data/resources/style_gtk.css  2023-09-09 14:43:29.000000000 
+0200
@@ -7,6 +7,7 @@
 @define-color ac_text #000000;
 @define-color ac_bg #fff895;
 @define-color ac_selection_bg #f8e45c;
+@define-color line_highlighting_color #eef4ff;
 
 /*
 ** main_window
@@ -236,7 +237,7 @@
 }
 .sidebar box.tabs-box {
     background-color: @theme_base_color;
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
+    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.8);
     padding-bottom: 0px;
 }
 .sidebar box.tabs-box.no-border {
@@ -255,29 +256,28 @@
     box-shadow: none;
 }
 box.sidebar-symbols {
-    background-color: mix(@theme_base_color, @theme_bg_color, 0.7);
+    background-color: @theme_base_color;
 }
 box.sidebar-symbols label {
     padding: 9px 8px 8px 9px;
     background-color: @theme_base_color;
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
+    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.8);
 }
 box.sidebar-symbols label.overlay {
     border-bottom-width: 0px;
 }
 box.sidebar-symbols flowbox {
-    background-color: mix(@theme_base_color, @theme_bg_color, 0.7);
+    background-color: @theme_base_color;
     padding-bottom: 36px;
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
 }
 box.sidebar-symbols flowbox flowboxchild {
     padding: 0px;
 }
 box.sidebar-symbols flowbox flowboxchild image {
     color: @theme_fg_color;
-    background-color: mix(@theme_base_color, @theme_bg_color, 0.7);
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
-    border-right: 1px solid mix(@theme_base_color, @borders, 0.5);
+    background-color: @theme_base_color;
+    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.8);
+    border-right: 1px solid mix(@theme_base_color, @borders, 0.8);
     margin: 0px;
     padding: 5px;
 }
@@ -294,7 +294,7 @@
 .sidebar-document-structure scrolledwindow label.headline {
     padding: 9px 8px 8px 9px;
     background-color: @theme_base_color;
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
+    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.8);
 }
 .sidebar-document-structure label.overlay {
     padding: 9px 8px 8px 9px;
@@ -321,7 +321,7 @@
 
 box.shortcutsbar {
     background-color: @theme_base_color;
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
+    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.8);
 }
 box.shortcutsbar button.scbar, box.shortcutsbar menubutton.scbar > button {
     border-width: 0px;
@@ -347,7 +347,7 @@
 }
 box.preview > box {
     background-color: @theme_base_color;
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
+    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.8);
 }
 box.preview button.scbar, box.preview .scbar > button {
     border-width: 0px;
@@ -416,7 +416,7 @@
 }
 box.help > box {
     background-color: @theme_base_color;
-    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.5);
+    border-bottom: 1px solid mix(@theme_base_color, @borders, 0.8);
 }
 box.help > box button {
     border-width: 0px;
@@ -517,6 +517,10 @@
 ** document wizard
 */
 
+label.wizard-button-label {
+    font-weight: normal;
+    text-decoration: underline;
+}
 box.document-wizard-page checkbutton {
     padding-left: 0px;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/meson.build new/Setzer-59/meson.build
--- old/Setzer-57/meson.build   2023-08-29 15:41:32.000000000 +0200
+++ new/Setzer-59/meson.build   2023-09-09 14:43:29.000000000 +0200
@@ -1,6 +1,6 @@
 project(
   'Setzer',
-  version: '57',
+  version: '59',
   license: 'GPL-3.0-or-later',
 )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/org.cvfosammmm.Setzer.json 
new/Setzer-59/org.cvfosammmm.Setzer.json
--- old/Setzer-57/org.cvfosammmm.Setzer.json    2023-08-29 15:41:32.000000000 
+0200
+++ new/Setzer-59/org.cvfosammmm.Setzer.json    2023-09-09 14:43:29.000000000 
+0200
@@ -162,7 +162,7 @@
             "config-opts": [
                 "-Ddocs=false",
                 "-Dvapi=false",
-                "-Dbackends=gtk3"
+                "-Dbackends=gtk4"
             ],
             "sources": [
                 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/setzer/app/font_manager.py 
new/Setzer-59/setzer/app/font_manager.py
--- old/Setzer-57/setzer/app/font_manager.py    2023-08-29 15:41:32.000000000 
+0200
+++ new/Setzer-59/setzer/app/font_manager.py    2023-09-09 14:43:29.000000000 
+0200
@@ -46,10 +46,10 @@
         else:
             
FontManager.main_window.css_provider_font_size.load_from_data(data.encode('utf-8'))
 
-    def get_char_width(text_view):
+    def get_char_width(text_view, char='A'):
         context = text_view.get_pango_context()
         layout = Pango.Layout.new(context)
-        layout.set_text('A', -1)
+        layout.set_text(char, -1)
         char_width, line_height_1 = layout.get_pixel_size()
         return char_width
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/document/code_folding/code_folding.py 
new/Setzer-59/setzer/document/code_folding/code_folding.py
--- old/Setzer-57/setzer/document/code_folding/code_folding.py  2023-08-29 
15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/document/code_folding/code_folding.py  2023-09-09 
14:43:29.000000000 +0200
@@ -30,6 +30,7 @@
         self.tag = self.source_buffer.create_tag('invisible_region', 
invisible=1)
 
         self.folding_regions = dict()
+        self.folding_regions_by_line = dict()
         self.initial_folded_regions = None
 
         self.document.parser.connect('finished_parsing', self.on_parser_update)
@@ -78,6 +79,7 @@
 
         last_line = -1
         self.folding_regions = dict()
+        self.folding_regions_by_line = dict()
         for block in parser.symbols['blocks']:
             if block[1] != None:
                 if block[2] != last_line:
@@ -91,6 +93,7 @@
                     region['starting_line'] = block[2]
                     region['ending_line'] = block[3]
                     self.folding_regions[block[0]] = region
+                    self.folding_regions_by_line[block[2]] = region
                 last_line = block[2]
 
         # in a last step, the regions that are no longer
@@ -102,9 +105,8 @@
         self.initial_folding()
 
     def get_region_by_line(self, line):
-        offset = self.source_buffer.get_iter_at_line(line).iter.get_offset()
-        if offset in self.folding_regions:
-            return self.folding_regions[offset]
+        if line in self.folding_regions_by_line:
+            return self.folding_regions_by_line[line]
         return None
 
     def fold(self, region):
@@ -129,7 +131,7 @@
             if some_region['is_folded']:
                 if some_region['starting_line'] >= region['starting_line'] and 
some_region['ending_line'] <= region['ending_line']:
                     self.hide_region(some_region)
-        self.add_change_code('folding_state_changed', region)
+        self.add_change_code('folding_state_changed')
 
     def hide_region(self, region):
         offset_start = region['offset_start']
@@ -141,7 +143,7 @@
             end_iter.forward_to_line_end()
         end_iter.forward_char()
         self.source_buffer.apply_tag(self.tag, start_iter, end_iter)
-        self.add_change_code('folding_state_changed', region)
+        self.add_change_code('folding_state_changed')
 
     def get_folded_regions(self):
         folded_regions = list()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/setzer/document/document.py 
new/Setzer-59/setzer/document/document.py
--- old/Setzer-57/setzer/document/document.py   2023-08-29 15:41:32.000000000 
+0200
+++ new/Setzer-59/setzer/document/document.py   2023-09-09 14:43:29.000000000 
+0200
@@ -32,6 +32,7 @@
 import setzer.document.parser.parser_bibtex as parser_bibtex
 import setzer.document.parser.parser_dummy as parser_dummy
 import setzer.document.code_folding.code_folding as code_folding
+import setzer.document.multiline_indentation.multiline_indentation as 
multiline_indentation
 import setzer.document.autocomplete.autocomplete as autocomplete
 from setzer.helpers.observable import Observable
 from setzer.app.service_locator import ServiceLocator
@@ -72,6 +73,7 @@
         elif self.is_bibtex_document(): self.parser = 
parser_bibtex.ParserBibTeX(self)
         else: self.parser = parser_dummy.ParserDummy(self)
         self.code_folding = code_folding.CodeFolding(self)
+        self.multiline_indentation = 
multiline_indentation.MultilineIndentation(self)
         self.gutter = gutter.Gutter(self, self.view)
         self.search = search.Search(self, self.view)
         if self.is_latex_document(): self.autocomplete = 
autocomplete.Autocomplete(self)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/setzer/document/document_presenter.py 
new/Setzer-59/setzer/document/document_presenter.py
--- old/Setzer-57/setzer/document/document_presenter.py 2023-08-29 
15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/document/document_presenter.py 2023-09-09 
14:43:29.000000000 +0200
@@ -30,8 +30,6 @@
         self.view = document_view
         self.settings = ServiceLocator.get_settings()
 
-        self.indentation_update = None
-
         self.view.source_view.set_show_line_numbers(False)
         
self.view.source_view.set_insert_spaces_instead_of_tabs(self.settings.get_value('preferences',
 'spaces_instead_of_tabs'))
         
self.view.source_view.set_tab_width(self.settings.get_value('preferences', 
'tab_width'))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/setzer/document/gutter/gutter.py 
new/Setzer-59/setzer/document/gutter/gutter.py
--- old/Setzer-57/setzer/document/gutter/gutter.py      2023-08-29 
15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/document/gutter/gutter.py      2023-09-09 
14:43:29.000000000 +0200
@@ -62,6 +62,7 @@
         self.settings.connect('settings_changed', self.on_settings_changed)
         self.document.connect('changed', self.on_document_change)
         self.document.connect('cursor_position_changed', self.on_cursor_change)
+        self.document.code_folding.connect('folding_state_changed', 
self.on_folding_state_changed)
         
self.document_view.scrolled_window.get_vadjustment().connect('changed', 
self.on_adjustment_changed)
         
self.document_view.scrolled_window.get_vadjustment().connect('value-changed', 
self.on_adjustment_value_changed)
 
@@ -117,6 +118,11 @@
         self.update_size()
         self.drawing_area.queue_draw()
 
+    def on_folding_state_changed(self, code_folding):
+        self.update_hovered_folding_region()
+        self.update_size()
+        self.drawing_area.queue_draw()
+
     def on_button_press(self, event_controller, n_press, x, y):
         if self.hovered_folding_region != None:
             if self.hovered_folding_region['is_folded']:
@@ -215,7 +221,9 @@
         current_line = 
self.source_buffer.get_iter_at_mark(self.source_buffer.get_insert()).get_line()
         line_iter, offset = 
self.source_view.get_line_at_y(self.adjustment.get_value())
         prev_line = None
-        while offset <= self.adjustment.get_value() + height:
+        line = -1
+        total_lines = self.source_buffer.get_end_iter().get_line()
+        while (offset <= self.adjustment.get_value() + height) and line < 
total_lines:
             line_iter, top = self.source_view.get_line_at_y(offset)
             line = line_iter.get_line()
             line_height = self.source_view.get_line_yrange(line_iter).height
@@ -247,12 +255,22 @@
             self.draw_folding_region(ctx, line, is_current, offset)
 
     def draw_line_number(self, ctx, line, is_current, offset):
-        if is_current: text = '<b>' + str(line + 1) + '</b>'
-        else: text = str(line + 1)
+        if is_current:
+            text = '<b>' + str(line + 1) + '</b>'
+        else:
+            text = str(line + 1)
+
+        if is_current:
+            Gdk.cairo_set_source_rgba(ctx, 
ColorManager.get_ui_color('line_highlighting_color'))
+            yrange = 
self.source_view.get_line_yrange(self.source_buffer.get_iter_at_line(line).iter)
+            ctx.rectangle(0, yrange.y - self.adjustment.get_value(), 
self.total_width, yrange.height)
+            ctx.fill()
+            Gdk.cairo_set_source_rgba(ctx, 
ColorManager.get_ui_color('theme_fg_color'))
 
         if offset < 0: offset -= 1
         offset = int(offset)
         ctx.move_to(0, offset)
+
         self.layout.set_markup(text)
         PangoCairo.show_layout(ctx, self.layout)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/document/multiline_indentation/multiline_indentation.py 
new/Setzer-59/setzer/document/multiline_indentation/multiline_indentation.py
--- 
old/Setzer-57/setzer/document/multiline_indentation/multiline_indentation.py    
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/Setzer-59/setzer/document/multiline_indentation/multiline_indentation.py    
    2023-09-09 14:43:29.000000000 +0200
@@ -0,0 +1,93 @@
+#!/usr/bin/env python3
+# coding: utf-8
+
+# Copyright (C) 2017-present Robert Griesel
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+# 
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+# 
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>
+
+from setzer.app.service_locator import ServiceLocator
+from setzer.app.font_manager import FontManager
+
+
+class MultilineIndentation(object):
+
+    def __init__(self, document):
+        self.document = document
+        self.source_buffer = self.document.source_buffer
+        self.adjustment = self.document.view.scrolled_window.get_vadjustment()
+
+        self.char_width = 
FontManager.get_char_width(self.document.view.source_view, ' ')
+        self.indentation_update = None
+        self.indentation_tags = dict()
+
+        self.document.parser.connect('finished_parsing', self.on_parser_update)
+        self.document.connect('changed', self.on_document_changed)
+        self.source_buffer.connect('notify::cursor-position', 
self.on_cursor_position_change)
+        self.adjustment.connect('changed', self.on_adjustment_change)
+        self.adjustment.connect('value-changed', 
self.on_adjustment_value_change)
+
+    def on_parser_update(self, parser):
+        if parser.last_edit[0] == 'insert':
+            _, location_iter, text, text_length = parser.last_edit
+            self.indentation_update = {'line_start': location_iter.get_line(), 
'text_length': text_length}
+        elif parser.last_edit[0] == 'delete':
+            _, start_iter, end_iter = parser.last_edit
+            self.indentation_update = {'line_start': start_iter.get_line(), 
'text_length': 0}
+
+    def on_document_changed(self, document):
+        if self.indentation_update != None:
+            _, start_iter = 
self.source_buffer.get_iter_at_line(self.indentation_update['line_start'])
+            end_iter = start_iter.copy()
+            end_iter.forward_chars(self.indentation_update['text_length'])
+            end_iter.forward_to_line_end()
+            start_iter.set_line_offset(0)
+            text = self.source_buffer.get_text(start_iter, end_iter, True)
+            for count, line in enumerate(text.splitlines()):
+                for tag in start_iter.get_tags():
+                    self.source_buffer.remove_tag(tag, start_iter, end_iter)
+                number_of_characters = len(line.replace('\t', ' ' * 
ServiceLocator.get_settings().get_value('preferences', 'tab_width'))) - 
len(line.lstrip())
+                if number_of_characters > 0:
+                    end_iter = start_iter.copy()
+                    end_iter.forward_chars(1)
+                    
self.source_buffer.apply_tag(self.get_indentation_tag(number_of_characters), 
start_iter, end_iter)
+                start_iter.forward_line()
+
+            self.indentation_update = None
+        self.update_tags()
+
+    def on_cursor_position_change(self, buffer, position):
+        self.update_tags()
+
+    def on_adjustment_change(self, adjustment):
+        self.update_tags()
+
+    def on_adjustment_value_change(self, adjustment):
+        self.update_tags()
+
+    def update_tags(self):
+        char_width = 
FontManager.get_char_width(self.document.view.source_view, ' ')
+        if char_width != self.char_width:
+            self.char_width = char_width
+            for number_of_characters, tag in self.indentation_tags.items():
+                tag.set_property('indent', -1 * number_of_characters * 
self.char_width)
+
+    def get_indentation_tag(self, number_of_characters):
+        try:
+            tag = self.indentation_tags[number_of_characters]
+        except KeyError:
+            tag = self.source_buffer.create_tag('indentation-' + 
str(number_of_characters))
+            tag.set_property('indent', -1 * number_of_characters * 
self.char_width)
+            self.indentation_tags[number_of_characters] = tag
+        return tag
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/workspace/headerbar/headerbar_presenter.py 
new/Setzer-59/setzer/workspace/headerbar/headerbar_presenter.py
--- old/Setzer-57/setzer/workspace/headerbar/headerbar_presenter.py     
2023-08-29 15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/workspace/headerbar/headerbar_presenter.py     
2023-09-09 14:43:29.000000000 +0200
@@ -75,20 +75,20 @@
         self.view.get_style_context().remove_class('welcome')
 
     def hide_pane_toggles(self):
-        self.view.document_structure_toggle.hide()
+        self.view.sidebar_toggles_box.hide()
         self.view.document_structure_toggle.set_sensitive(False)
-        self.view.symbols_toggle.hide()
         self.view.symbols_toggle.set_sensitive(False)
+
         self.view.preview_toggle.hide()
         self.view.preview_toggle.set_sensitive(False)
         self.view.help_toggle.hide()
         self.view.help_toggle.set_sensitive(False)
 
     def show_pane_toggles(self):
-        self.view.document_structure_toggle.show()
+        self.view.sidebar_toggles_box.show()
         self.view.document_structure_toggle.set_sensitive(True)
-        self.view.symbols_toggle.show()
         self.view.symbols_toggle.set_sensitive(True)
+
         self.view.preview_toggle.show()
         self.view.preview_toggle.set_sensitive(True)
         self.view.help_toggle.show()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/workspace/headerbar/headerbar_viewgtk.py 
new/Setzer-59/setzer/workspace/headerbar/headerbar_viewgtk.py
--- old/Setzer-57/setzer/workspace/headerbar/headerbar_viewgtk.py       
2023-08-29 15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/workspace/headerbar/headerbar_viewgtk.py       
2023-09-09 14:43:29.000000000 +0200
@@ -33,19 +33,22 @@
         Gtk.HeaderBar.__init__(self)
 
         # sidebar toggles
-        box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0)
         self.document_structure_toggle = Gtk.ToggleButton()
         
self.document_structure_toggle.set_child(Gtk.Image.new_from_icon_name('document-structure-symbolic'))
         self.document_structure_toggle.set_can_focus(False)
         self.document_structure_toggle.set_tooltip_text(_('Toggle document 
structure') + ' (F2)')
-        box.append(self.document_structure_toggle)
+
         self.symbols_toggle = Gtk.ToggleButton()
         
self.symbols_toggle.set_child(Gtk.Image.new_from_icon_name('own-symbols-misc-text-symbolic'))
         self.symbols_toggle.set_can_focus(False)
         self.symbols_toggle.set_tooltip_text(_('Toggle symbols') + ' (F3)')
-        box.append(self.symbols_toggle)
-        box.get_style_context().add_class('linked')
-        self.pack_start(box)
+
+        self.sidebar_toggles_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0)
+        self.sidebar_toggles_box.append(self.document_structure_toggle)
+        self.sidebar_toggles_box.append(self.symbols_toggle)
+        self.sidebar_toggles_box.get_style_context().add_class('linked')
+
+        self.pack_start(self.sidebar_toggles_box)
 
         # open document buttons
         self.open_document_blank_button = Gtk.Button.new_with_label(_('Open') 
+ '...')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/workspace/shortcutsbar/latex_shortcutsbar/latex_shortcutsbar_viewgtk.py
 
new/Setzer-59/setzer/workspace/shortcutsbar/latex_shortcutsbar/latex_shortcutsbar_viewgtk.py
--- 
old/Setzer-57/setzer/workspace/shortcutsbar/latex_shortcutsbar/latex_shortcutsbar_viewgtk.py
        2023-08-29 15:41:32.000000000 +0200
+++ 
new/Setzer-59/setzer/workspace/shortcutsbar/latex_shortcutsbar/latex_shortcutsbar_viewgtk.py
        2023-09-09 14:43:29.000000000 +0200
@@ -120,10 +120,11 @@
         icon = Gtk.Image.new_from_icon_name('own-wizard-symbolic')
         icon.set_margin_start(4)
         icon_widget.append(icon)
-        self.wizard_button_revealer = Gtk.Revealer()
         label = Gtk.Label.new(_('New Document Wizard'))
         label.set_margin_start(6)
         label.set_margin_end(4)
+        label.get_style_context().add_class('wizard-button-label')
+        self.wizard_button_revealer = Gtk.Revealer()
         self.wizard_button_revealer.set_child(label)
         
self.wizard_button_revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_LEFT)
         self.wizard_button_revealer.set_reveal_child(True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/workspace/shortcutsbar/others_shortcutsbar/others_shortcutsbar_viewgtk.py
 
new/Setzer-59/setzer/workspace/shortcutsbar/others_shortcutsbar/others_shortcutsbar_viewgtk.py
--- 
old/Setzer-57/setzer/workspace/shortcutsbar/others_shortcutsbar/others_shortcutsbar_viewgtk.py
      2023-08-29 15:41:32.000000000 +0200
+++ 
new/Setzer-59/setzer/workspace/shortcutsbar/others_shortcutsbar/others_shortcutsbar_viewgtk.py
      2023-09-09 14:43:29.000000000 +0200
@@ -27,6 +27,7 @@
         Gtk.Box.__init__(self)
         self.set_orientation(Gtk.Orientation.HORIZONTAL)
         self.get_style_context().add_class('shortcutsbar')
+        self.set_can_focus(False)
 
         self.top_icons = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0)
         self.right_icons = Gtk.Box()
@@ -35,19 +36,8 @@
         self.center_icons.set_orientation(Gtk.Orientation.HORIZONTAL)
         self.center_icons.set_hexpand(True)
 
-        self.populate_top_toolbar()
-
         self.append(self.top_icons)
         self.append(self.center_icons)
         self.append(self.right_icons)
 
-    def create_top_toolbar(self):
-        self.top_icons = Gtk.Toolbar()
-        self.top_icons.set_style(Gtk.ToolbarStyle.ICONS)
-        self.top_icons.set_orientation(Gtk.Orientation.HORIZONTAL)
-        self.top_icons.set_icon_size(Gtk.IconSize.SMALL_TOOLBAR)
-        
-    def populate_top_toolbar(self):
-        pass
-
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/workspace/shortcutsbar/shortcutsbar.py 
new/Setzer-59/setzer/workspace/shortcutsbar/shortcutsbar.py
--- old/Setzer-57/setzer/workspace/shortcutsbar/shortcutsbar.py 2023-08-29 
15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/workspace/shortcutsbar/shortcutsbar.py 2023-09-09 
14:43:29.000000000 +0200
@@ -15,6 +15,10 @@
 # You should have received a copy of the GNU General Public License
 # along with this program. If not, see <http://www.gnu.org/licenses/>
 
+import gi
+gi.require_version('Gtk', '4.0')
+from gi.repository import Gtk
+
 from setzer.app.service_locator import ServiceLocator
 
 
@@ -32,34 +36,70 @@
         self.latex_shortcutsbar.button_search.connect('clicked', 
self.on_find_button_clicked)
         self.latex_shortcutsbar.button_replace.connect('clicked', 
self.on_find_replace_button_clicked)
 
-        self.workspace.connect('document_removed', self.update_document)
-        self.workspace.connect('new_active_document', self.update_document)
+        self.workspace.connect('document_removed', self.on_document_removed)
+        self.workspace.connect('new_active_document', 
self.on_new_active_document)
         self.workspace.connect('show_build_log_state_change', 
self.update_buttons)
 
-        self.document = None
-        self.update_document()
+        self.preview_paned = ServiceLocator.get_main_window().preview_paned
+        self.width = 0
+        self.preview_paned.connect('notify::position', 
self.on_paned_position_changed)
 
-    def update_document(self, workspace=None, parameter=None):
+        self.document = self.workspace.active_document
         if self.document != None:
+            self.document.connect('changed', self.on_document_changed)
+            self.document.search.connect('mode_changed', self.update_buttons)
+            self.update_wizard_button()
+
+    def on_document_removed(self, workspace=None, parameter=None):
+        if self.workspace.active_document == None:
             self.document.disconnect('changed', self.update_buttons)
             self.document.search.disconnect('mode_changed', 
self.update_buttons)
+            self.document == None
+
+        self.update_buttons()
+
+    def on_new_active_document(self, workspace=None, parameter=None):
+        if self.document != None:
+            self.document.disconnect('changed', self.on_document_changed)
+            self.document.search.disconnect('mode_changed', 
self.update_buttons)
 
         self.document = self.workspace.active_document
         if self.document != None:
-            self.document.connect('changed', self.update_buttons)
+            self.document.connect('changed', self.on_document_changed)
             self.document.search.connect('mode_changed', self.update_buttons)
+            self.update_wizard_button()
 
         self.update_buttons()
 
-    def update_buttons(self, workspace=None, parameter=None):
+    def on_paned_position_changed(self, paned, position=None):
+        self.width = paned.get_position()
+        self.update_wizard_button(animate=True)
+
+    def on_document_changed(self, workspace=None, parameter=None):
+        self.update_wizard_button(animate=True)
+
+    def update_wizard_button(self, animate=False):
         if self.document == None: return
 
         if self.document.is_latex_document():
-            if self.document.source_buffer.get_char_count() > 0:
-                
self.latex_shortcutsbar.wizard_button_revealer.set_reveal_child(False)
-            else:
+            is_visible = self.document.source_buffer.get_char_count() == 0 and 
self.width > 675
+            if is_visible and animate == False:
+                
self.latex_shortcutsbar.wizard_button_revealer.set_transition_type(Gtk.RevealerTransitionType.NONE)
                 
self.latex_shortcutsbar.wizard_button_revealer.set_reveal_child(True)
+                
self.latex_shortcutsbar.wizard_button_revealer.set_transition_type(Gtk.RevealerTransitionType.SLIDE_LEFT)
+                self.latex_shortcutsbar.wizard_button_revealer.show()
+            elif is_visible:
+                self.latex_shortcutsbar.wizard_button_revealer.show()
+                
self.latex_shortcutsbar.wizard_button_revealer.set_reveal_child(True)
+            elif animate == False:
+                self.latex_shortcutsbar.wizard_button_revealer.hide()
+            else:
+                
self.latex_shortcutsbar.wizard_button_revealer.set_reveal_child(False)
 
+    def update_buttons(self, workspace=None, parameter=None):
+        if self.document == None: return
+
+        if self.document.is_latex_document():
             
self.latex_shortcutsbar.button_more.set_popover(self.document.context_menu.popover_more)
             
self.latex_shortcutsbar.button_search.set_active(self.document.search.search_bar_mode
 == 'search')
             
self.latex_shortcutsbar.button_replace.set_active(self.document.search.search_bar_mode
 == 'replace')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/workspace/sidebar/symbols_page/symbols_page.py 
new/Setzer-59/setzer/workspace/sidebar/symbols_page/symbols_page.py
--- old/Setzer-57/setzer/workspace/sidebar/symbols_page/symbols_page.py 
2023-08-29 15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/workspace/sidebar/symbols_page/symbols_page.py 
2023-09-09 14:43:29.000000000 +0200
@@ -158,7 +158,7 @@
             if margin_top > 1 and margin_top <= label.get_allocated_height():
                 self.view.tabs_box.get_style_context().add_class('no-border')
             if len(symbols_view.visible_symbols) > 0:
-                offset += symbols_view.get_allocated_height() + 
placeholder.get_allocated_height()
+                offset += symbols_view.get_allocated_height() + 
self.view.tabs.get_allocated_height()
 
     def on_next_button_clicked(self, button):
         offset = self.view.symbols_view_recent.get_allocated_height() + 
self.view.label_recent.get_allocated_height() + 2
@@ -255,6 +255,9 @@
                 symbols_view.hide()
                 self.view.labels[i].hide()
                 self.view.placeholders[i].hide()
+            adjustment = self.view.scrolled_window.get_vadjustment()
+            if adjustment.get_upper() <= 
self.view.scrolled_window.get_allocated_height():
+                self.view.labels[i].hide()
 
     def on_symbols_view_size_allocate(self, *arguments):
         for symbols_view in self.view.symbols_views:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/Setzer-57/setzer/workspace/sidebar/symbols_page/symbols_page_viewgtk.py 
new/Setzer-59/setzer/workspace/sidebar/symbols_page/symbols_page_viewgtk.py
--- old/Setzer-57/setzer/workspace/sidebar/symbols_page/symbols_page_viewgtk.py 
2023-08-29 15:41:32.000000000 +0200
+++ new/Setzer-59/setzer/workspace/sidebar/symbols_page/symbols_page_viewgtk.py 
2023-09-09 14:43:29.000000000 +0200
@@ -141,6 +141,7 @@
             self.labels.append(label)
             placeholder = Gtk.Label.new(symbols_list[2])
             placeholder.set_xalign(0)
+            placeholder.get_style_context().add_class('placeholder')
             self.placeholders.append(placeholder)
             self.vbox.append(placeholder)
             self.symbols_views.append(symbols_list_view)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Setzer-57/setzer.in new/Setzer-59/setzer.in
--- old/Setzer-57/setzer.in     2023-08-29 15:41:32.000000000 +0200
+++ new/Setzer-59/setzer.in     2023-09-09 14:43:29.000000000 +0200
@@ -91,6 +91,7 @@
 
         # get settings
         self.settings = ServiceLocator.get_settings()
+        
Adw.StyleManager.get_default().set_color_scheme(Adw.ColorScheme.FORCE_LIGHT)
 
         # init static variables
         ServiceLocator.set_setzer_version('@setzer_version@')

Reply via email to