diff --git a/gi/overrides/Gtk.py b/gi/overrides/Gtk.py
index 47ae4e5..24e0c41 100644
--- a/gi/overrides/Gtk.py
+++ b/gi/overrides/Gtk.py
@@ -1153,6 +1153,8 @@ class TreePath(Gtk.TreePath):
     def __new__(cls, path=0):
         if isinstance(path, int):
             path = str(path)
+        elif not path:
+            return super(TreePath, cls).__new__(cls)
         elif not isinstance(path, _basestring):
             path = ":".join(str(val) for val in path)
 
diff --git a/tests/test_overrides_gtk.py b/tests/test_overrides_gtk.py
index f47c63b..e6985db 100644
--- a/tests/test_overrides_gtk.py
+++ b/tests/test_overrides_gtk.py
@@ -1348,6 +1348,15 @@ class TestTreeModel(unittest.TestCase):
         self.assertEqual(p1[2], 3)
         self.assertRaises(IndexError, p1.__getitem__, 3)
 
+    def test_tree_path_empty(self):
+        p1 = Gtk.TreePath(None)
+        p2 = Gtk.TreePath(())
+        p3 = Gtk.TreePath('')
+        self.assertEqual(p1, p2)
+        self.assertEqual(p2, p3)
+        self.assertEqual(str(p1), '')
+        self.assertEqual(len(p1), 0)
+
     def test_tree_model(self):
         tree_store = Gtk.TreeStore(int, str)
 
