File ggreeter-bnc327414.patch of Package ggreeter

diff --git a/src/Greeter.cs b/src/Greeter.cs
index 0492a13..81ac8d1 100644
--- a/src/Greeter.cs
+++ b/src/Greeter.cs
@@ -21,8 +21,10 @@ namespace Greeter {
 	public class Presenter : Window {
 		private static GConf.Client client;
 		private HTML html;
+		private ScrolledWindow scroll;
 		private const string FirstRun = "/apps/ggreeter/firstrun/10.3";
-
+		private static Gdk.Rectangle MaxGeom = new Gdk.Rectangle (0, 0, 800, 600);
+		private int zoom_steps = 6;
 
 		public static void Main (string [] args)
 		{
@@ -51,6 +53,25 @@ namespace Greeter {
 			}
 		}
 
+		protected override void OnRealized ()
+		{
+			base.OnRealized ();
+
+			int monitor = GdkWindow.Screen.GetMonitorAtWindow (GdkWindow);
+			Gdk.Rectangle geom = GdkWindow.Screen.GetMonitorGeometry (monitor);
+			
+			if (geom.Width < MaxGeom.Width || geom.Height < MaxGeom.Height)
+				SetSizeRequest (geom.Width - 50, geom.Height - 50);
+		}
+
+		protected override bool OnExposeEvent (Gdk.EventExpose args)
+		{
+			if (scroll.HScrollbar.Visible || scroll.VScrollbar.Visible && zoom_steps-- > 0)
+				html.ZoomOut ();
+			
+			return base.OnExposeEvent (args);
+		}
+
 		public Presenter () : base ("")
 		{
 			Decorated = false;
@@ -62,8 +83,11 @@ namespace Greeter {
 			html = new Gtk.HTML ();
 			html.LinkClicked += HandleLinkClicked;
 			html.UrlRequested += HandleUrlRequested;
-			html.SetUsize (800,600);
+
+			SetSizeRequest (MaxGeom.Width, MaxGeom.Height);
+
 			html.ZoomIn ();
+
 			Gtk.HTMLStream hstream = html.Begin (null, "text/html; charset=utf-8", Gtk.HTMLBeginFlags.Scroll);
 		
 			using (Stream header = Open ("greet_header.html"))
@@ -78,7 +102,9 @@ namespace Greeter {
 			
 			hstream.Close (Gtk.HTMLStreamStatus.Ok);
 			
-			this.Add (html);
+			scroll = new ScrolledWindow ();
+			scroll.Add (html);
+			this.Add (scroll);
 			ShowAll ();
 		}
 
openSUSE Build Service is sponsored by