Fix scrolling functionality
[WebThing.git] / plugins / FFNav.cs
1 using System;
2 using Gtk;
3 using WebKit;
4 using bytex64.WebThing;
5
6 public class FFNav : WebThingPlugin {
7     WebThing wt;
8
9     public override void Init(WebThing wt) {
10         this.wt = wt;
11
12         wt.Window.KeyPressEvent += Window_KeyPress;
13     }
14
15     public override void InitWebView(WebView wv) {
16         wv.KeyPressEvent += WebView_KeyPress;
17     }
18
19     private void Window_KeyPress(object o, KeyPressEventArgs e) {
20         if ((e.Event.State & Gdk.ModifierType.ControlMask) != 0) {
21             switch(e.Event.Key) {
22             case Gdk.Key.t:
23                 wt.NewTab();
24                 wt.Tabs.CurrentPage = wt.Tabs.NPages - 1;
25                 break;
26             case Gdk.Key.w:
27                 wt.CloseTab();
28                 break;
29             }
30         }
31     }
32
33     private void WebView_KeyPress(object o, KeyPressEventArgs e) {
34         WebView wv = (WebView) o;
35         if ((e.Event.State & Gdk.ModifierType.Mod1Mask) != 0) {
36             switch(e.Event.Key) {
37             case Gdk.Key.Left:
38                 wv.GoBack();
39                 break;
40             case Gdk.Key.Right:
41                 wv.GoForward();
42                 break;
43             }
44         } else if ((e.Event.State & Gdk.ModifierType.ControlMask) != 0) {
45             switch(e.Event.Key) {
46             case Gdk.Key.ISO_Left_Tab:
47                 if (wt.Tabs.CurrentPage == 0)
48                     wt.Tabs.CurrentPage = wt.Tabs.NPages - 1;
49                 else
50                     wt.Tabs.PrevPage();
51                 break;
52             case Gdk.Key.Tab:
53                 if (wt.Tabs.CurrentPage == wt.Tabs.NPages - 1)
54                     wt.Tabs.CurrentPage = 0;
55                 else
56                     wt.Tabs.NextPage();
57                 break;
58             }
59         } else {
60             switch(e.Event.Key) {
61             case Gdk.Key.BackSpace:
62                 wv.GoBack();
63                 break;
64             case Gdk.Key.Escape:
65                 wv.StopLoading();
66                 break;
67             }
68         }
69     }
70 }