diff --git a/components/turbopower_ipro/iphtml.pas b/components/turbopower_ipro/iphtml.pas
index 01a303c3be..954e0c0fd0 100644
--- a/components/turbopower_ipro/iphtml.pas
+++ b/components/turbopower_ipro/iphtml.pas
@@ -2759,7 +2759,9 @@ type
     procedure CopyToClipboard;
     procedure EnumDocuments(Enumerator: TIpHtmlEnumerator);
     procedure GoBack;
+    function canGoBack : boolean;
     procedure GoForward;
+    function canGoForward : boolean;
     function HaveSelection: Boolean;
     property HotNode : TIpHtmlNode read FHotNode;                      {!!.12}
     function IsURLHtml(const URL: string): Boolean;
@@ -17441,11 +17443,19 @@ end;
 procedure TIpHtmlCustomPanel.GoBack;
 begin
   if (URLStack.Count > 0) then begin
-    InternalOpenURL(TargetStack[Stp], URLStack[Stp]);
-    dec(Stp);
+    if URLStack.Count >= URLStack.count then Stp := URLStack.Count - 1;
+    if URLStack.Count > 0 then begin
+      InternalOpenURL(TargetStack[Stp], URLStack[Stp]);
+      dec(Stp);
+    end;
   end;
 end;
 
+function TIpHtmlCustomPanel.canGoBack : boolean;
+begin
+  result := (URLStack.Count > 0);
+end;
+
 procedure TIpHtmlCustomPanel.GoForward;
 begin
   if Stp < URLStack.Count - 1 then begin
@@ -17454,6 +17464,11 @@ begin
   end;
 end;
 
+function TIpHtmlCustomPanel.canGoForward : boolean;
+begin
+  result := (Stp < URLStack.Count - 1);
+end;
+
 procedure TIpHtmlCustomPanel.Push(const Target, URL: string);
 begin
   if (Stp > 0)
diff --git a/components/turbopower_ipro/turbopoweripro.lpk b/components/turbopower_ipro/turbopoweripro.lpk
index 9e52df98ed..7b9c752aac 100644
--- a/components/turbopower_ipro/turbopoweripro.lpk
+++ b/components/turbopower_ipro/turbopoweripro.lpk
@@ -22,7 +22,7 @@
     
     
     
-    
+    
       
         
         
@@ -32,34 +32,39 @@
         
       
       
+        
+        
+      
+      
+        
+        
+      
+      
+        
+        
+        
+      
+      
         
         
         
-      
-      
-        
-        
-      
-      
-        
-        
-      
-      
-        
-        
       
       
-        
-        
+        
+        
       
       
-        
-        
+        
+        
       
       
-        
-        
+        
+        
       
+      
+        
+        
+      
     
     
     
diff --git a/components/turbopower_ipro/turbopoweripro.pas b/components/turbopower_ipro/turbopoweripro.pas
index 2ce07da721..3e270bc899 100644
--- a/components/turbopower_ipro/turbopoweripro.pas
+++ b/components/turbopower_ipro/turbopoweripro.pas
@@ -7,13 +7,14 @@ unit TurboPowerIPro;
 interface
 
 uses
-  IpAnim, IpConst, IpHtml, IpHtmlPv, IpMsg, IpStrms, IpUtils, 
+  IpAnim, IpConst, Ipfilebroker, IpHtml, IpHtmlPv, IpMsg, IpStrms, IpUtils, 
     LazarusPackageIntf; 
 
 implementation
 
 procedure Register; 
 begin
+  RegisterUnit('Ipfilebroker', @Ipfilebroker.Register); 
   RegisterUnit('IpHtml', @IpHtml.Register); 
 end; 
 
diff --git a/lcl/include/control.inc b/lcl/include/control.inc
index a6d5d597fd..3ec35a5205 100644
--- a/lcl/include/control.inc
+++ b/lcl/include/control.inc
@@ -225,20 +225,18 @@ begin
   { Notifications can be performed here }
 end;
 
-{------------------------------------------------------------------------------}
-{       TControl.Bringtofront
-}
-{------------------------------------------------------------------------------}
-Procedure TControl.BringToFront;
+{------------------------------------------------------------------------------
+       TControl.Bringtofront
+------------------------------------------------------------------------------}
+procedure TControl.BringToFront;
 begin
   SetZOrder(true);
 end;
 
-{------------------------------------------------------------------------------}
-{       TControl.CanTab
-}
-{------------------------------------------------------------------------------}
-Function TControl.CanTab: Boolean;
+{------------------------------------------------------------------------------
+       TControl.CanTab
+------------------------------------------------------------------------------}
+function TControl.CanTab: Boolean;
 begin
   Result := False;
 end;
@@ -246,10 +244,10 @@ end;
 {------------------------------------------------------------------------------
        TControl.Change
 ------------------------------------------------------------------------------}
-Procedure TControl.Changed;
-Begin
+procedure TControl.Changed;
+begin
   Perform(CM_CHANGED, 0, LParam(self));
-End;
+end;
 
 {------------------------------------------------------------------------------
   TControl.EditingDone