[gitg] Added ignore-whitespace option for diff



commit c9b0d2994952ce7e715340c2e33798f7afcf84f6
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Mon Jun 30 22:02:23 2014 +0200

    Added ignore-whitespace option for diff

 data/org.gnome.gitg.gschema.xml.in.in |    5 +++
 libgitg/gitg-diff-view.vala           |   47 +++++++++++++++++++++++++++++++++
 2 files changed, 52 insertions(+), 0 deletions(-)
---
diff --git a/data/org.gnome.gitg.gschema.xml.in.in b/data/org.gnome.gitg.gschema.xml.in.in
index 2563b01..57a2d4c 100644
--- a/data/org.gnome.gitg.gschema.xml.in.in
+++ b/data/org.gnome.gitg.gschema.xml.in.in
@@ -166,4 +166,9 @@
       <default>false</default>
     </key>
   </schema>
+  <schema gettext-domain="@GETTEXT_PACKAGE@" id="org.gnome.gitg.state.diff" 
path="/org/gnome/gitg/state/diff/">
+    <key name="ignore-whitespace" type="b">
+      <default>false</default>
+    </key>
+  </schema>
 </schemalist>
diff --git a/libgitg/gitg-diff-view.vala b/libgitg/gitg-diff-view.vala
index d0dde3e..deadfac 100644
--- a/libgitg/gitg-diff-view.vala
+++ b/libgitg/gitg-diff-view.vala
@@ -104,6 +104,22 @@ namespace Gitg
                public bool unstaged { get; set; default = false; }
                public int tab_width { get; set; default = 4; }
 
+               public bool ignore_whitespace
+               {
+                       get { return (options.flags & Ggit.DiffOption.IGNORE_WHITESPACE) != 0; }
+                       set
+                       {
+                               if (value)
+                               {
+                                       options.flags |= Ggit.DiffOption.IGNORE_WHITESPACE;
+                               }
+                               else
+                               {
+                                       options.flags &= ~Ggit.DiffOption.IGNORE_WHITESPACE;
+                               }
+                       }
+               }
+
                static construct
                {
                        s_diff_map = new Gee.HashMap<string, DiffView>();
@@ -483,6 +499,37 @@ namespace Gitg
 
                        return ret;
                }
+
+               protected override bool context_menu(WebKit.ContextMenu   menu,
+                                                    Gdk.Event            event,
+                                                    WebKit.HitTestResult hit_test_result)
+               {
+                       var m = new Gtk.Menu();
+
+                       var item = new Gtk.CheckMenuItem.with_label(_("Ignore whitespace changes"));
+                       item.active = ignore_whitespace;
+
+                       item.toggled.connect((i) => {
+                               ignore_whitespace = i.active;
+                       });
+
+                       m.append(item);
+                       m.show_all();
+
+                       m.attach_to_widget(this, null);
+
+                       if (event.type == Gdk.EventType.BUTTON_PRESS ||
+                           event.type == Gdk.EventType.BUTTON_RELEASE)
+                       {
+                               m.popup(null, null, null, event.button.button, event.button.time);
+                       }
+                       else
+                       {
+                               m.popup(null, null, null, 0, Gdk.CURRENT_TIME);
+                       }
+
+                       return true;
+               }
        }
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]