Clone in a terminal:
Commit c82e6b4
Johan Mattsson - 2014-11-30T20:19:10+00:00
c82e6b4996b7b9961e48e2f52bc1cf6c926339c3johan.mattsson.m@gmail.com

Update scroll bar when content size changes

Changed files (13)

Diff

diff --git a/libbirdfont/DescriptionDisplay.vala b/libbirdfont/DescriptionDisplay.valaindex a3bb115..adae374 100644--- a/libbirdfont/DescriptionDisplay.vala+++ b/libbirdfont/DescriptionDisplay.vala@@ -325,7 +325,7 @@ public class DescriptionDisplay : FontDisplay { 		GlyphCanvas.redraw (); 	} 	-	public void update_scrollbar () {+	public override void update_scrollbar () { 		double h = content_height - allocation.height; 		MainWindow.set_scrollbar_size (allocation.height / content_height); 		MainWindow.set_scrollbar_position (scroll /  h);diff --git a/libbirdfont/FileDialogTab.vala b/libbirdfont/FileDialogTab.valaindex 4a01506..567a2ee 100644--- a/libbirdfont/FileDialogTab.vala+++ b/libbirdfont/FileDialogTab.vala@@ -307,7 +307,7 @@ public class FileDialogTab : FontDisplay { 		redraw_area (0, 0, allocation.width, allocation.height); 	} 	-	public void update_scrollbar () {+	public override void update_scrollbar () { 		uint rows = files.size + directories.size;  		if (rows == 0 || visible_rows == 0) {diff --git a/libbirdfont/FileTab.vala b/libbirdfont/FileTab.valaindex 94da465..6cea168 100644--- a/libbirdfont/FileTab.vala+++ b/libbirdfont/FileTab.vala@@ -383,7 +383,7 @@ public class FileTab : FontDisplay { 		redraw_area (0, 0, allocation.width, allocation.height); 	} 	-	public void update_scrollbar () {+	public override void update_scrollbar () { 		int r = rows ();  		if (r == 0 || visible_rows == 0) {diff --git a/libbirdfont/FontDisplay.vala b/libbirdfont/FontDisplay.valaindex 15f759f..5a03362 100644--- a/libbirdfont/FontDisplay.vala+++ b/libbirdfont/FontDisplay.vala@@ -22,6 +22,8 @@ public abstract class FontDisplay : GLib.Object { 	private static double last_tap_y = -1; 	private static double last_tap_time = 0; +	public static bool dirty_scrollbar = true;+ 	/** Queue redraw area */ 	public signal void redraw_area (double x, double y, double w, double h); 	@@ -42,6 +44,9 @@ public abstract class FontDisplay : GLib.Object { 		return false; 	} 	+	public virtual void update_scrollbar () {+	}+		 	public virtual void scroll_to (double percent) { 	} 	diff --git a/libbirdfont/GlyphCanvas.vala b/libbirdfont/GlyphCanvas.valaindex 47abd10..9cffe81 100644--- a/libbirdfont/GlyphCanvas.vala+++ b/libbirdfont/GlyphCanvas.vala@@ -56,6 +56,7 @@ public class GlyphCanvas : GLib.Object { 		
 		if (signal_selected) {
 			current_display.selected_canvas ();
+			current_display.dirty_scrollbar = true;
 		}
 		
 		current_display.redraw_area.connect ((x, y, w, h) => {
diff --git a/libbirdfont/KerningList.vala b/libbirdfont/KerningList.valaindex 876f793..7cadc23 100644--- a/libbirdfont/KerningList.vala+++ b/libbirdfont/KerningList.vala@@ -248,7 +248,7 @@ public class KerningList : FontDisplay { 		redraw_area (0, 0, allocation.width, allocation.height); 	} 	-	public void update_scrollbar () {+	public override void update_scrollbar () { 		KerningClasses classes = BirdFont.get_current_font ().get_kerning_classes (); 		uint rows = classes.get_number_of_pairs (); diff --git a/libbirdfont/LanguageSelectionTab.vala b/libbirdfont/LanguageSelectionTab.valaindex 56989c0..9fba60e 100644--- a/libbirdfont/LanguageSelectionTab.vala+++ b/libbirdfont/LanguageSelectionTab.vala@@ -132,7 +132,7 @@ public class LanguageSelectionTab : FontDisplay { 		redraw_area (0, 0, allocation.width, allocation.height); 	} 	-	public void update_scrollbar () {+	public override void update_scrollbar () { 		uint rows = DefaultLanguages.names.size;  		if (rows == 0 || visible_rows == 0) {diff --git a/libbirdfont/OverView.vala b/libbirdfont/OverView.valaindex 7248a3b..ca4650d 100644--- a/libbirdfont/OverView.vala+++ b/libbirdfont/OverView.vala@@ -1043,7 +1043,7 @@ public class OverView : FontDisplay { 		open_overview_item (selected_item); 	} -	public void update_scrollbar () {+	public override void update_scrollbar () { 		Font f; 		double nrows = 0; 		double pos = 0;diff --git a/libbirdfont/OverviewTools.vala b/libbirdfont/OverviewTools.valaindex e2bd6c5..54661d0 100644--- a/libbirdfont/OverviewTools.vala+++ b/libbirdfont/OverviewTools.vala@@ -50,6 +50,7 @@ public class OverviewTools : ToolCollection  { 			OverView overview = get_overview (); 			overview.display_all_available_glyphs (); 			update_overview_characterset ();+			overview.dirty_scrollbar = true; 		}); 		character_sets.add_tool (all_glyphs); @@ -61,6 +62,7 @@ public class OverviewTools : ToolCollection  { 			DefaultCharacterSet.use_default_range (gr); 			overview.set_glyph_range (gr); 			update_overview_characterset ();+			overview.dirty_scrollbar = true; 		}); 		character_sets.add_tool (default_glyphs); @@ -72,6 +74,7 @@ public class OverviewTools : ToolCollection  { 			DefaultCharacterSet.use_full_unicode_range (gr); 			overview.set_glyph_range (gr); 			update_overview_characterset ();+			overview.dirty_scrollbar = true; 		}); 		character_sets.add_tool (unicode); 		diff --git a/libbirdfont/SettingsDisplay.vala b/libbirdfont/SettingsDisplay.valaindex 4dbd091..6df501e 100644--- a/libbirdfont/SettingsDisplay.vala+++ b/libbirdfont/SettingsDisplay.vala@@ -409,7 +409,7 @@ public class SettingsDisplay : FontDisplay { 		GlyphCanvas.redraw (); 	} 	-	public void update_scrollbar () {+	public override void update_scrollbar () { 		double h = content_height - allocation.height; 		MainWindow.set_scrollbar_size (allocation.height / content_height); 		MainWindow.set_scrollbar_position (scroll /  h);diff --git a/libbirdfont/TabContent.vala b/libbirdfont/TabContent.valaindex 1282d7d..b893421 100644--- a/libbirdfont/TabContent.vala+++ b/libbirdfont/TabContent.vala@@ -84,6 +84,11 @@ public class TabContent : GLib.Object { 			if (menu.show_menu) { 				menu.draw (allocation, cr); 			}+			+			if (GlyphCanvas.current_display.dirty_scrollbar) {+				GlyphCanvas.current_display.update_scrollbar ();+				GlyphCanvas.current_display.dirty_scrollbar = false;+			} 		} 	} 	diff --git a/libbirdfont/Table.vala b/libbirdfont/Table.valaindex 985f3bc..2e6da18 100644--- a/libbirdfont/Table.vala+++ b/libbirdfont/Table.vala@@ -162,7 +162,7 @@ public abstract class Table : FontDisplay { 		redraw_area (0, 0, allocation.width, allocation.height); 	} 	-	public void update_scrollbar () {+	public override void update_scrollbar () { 		uint rows = get_rows ().size;  		if (rows == 0 || visible_rows == 0) {diff --git a/libbirdfont/ZoomBar.vala b/libbirdfont/ZoomBar.valaindex 02943ca..be9a83f 100644--- a/libbirdfont/ZoomBar.vala+++ b/libbirdfont/ZoomBar.vala@@ -76,6 +76,8 @@ public class ZoomBar : Tool { 		if (!MenuTab.suppress_event) { 			new_zoom (zoom_level); 		}+		+		GlyphCanvas.current_display.dirty_scrollbar = true; 	} 	 	public override void draw (Context cr) {

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112