Gtk.ListStore.RowsReorderedSignalCallback C# (CSharp) Method

RowsReorderedSignalCallback() static private method

static private RowsReorderedSignalCallback ( IntPtr arg0, IntPtr arg1, IntPtr arg2, IntPtr arg3, IntPtr gch ) : void
arg0 System.IntPtr
arg1 System.IntPtr
arg2 System.IntPtr
arg3 System.IntPtr
gch System.IntPtr
return void
        static void RowsReorderedSignalCallback(IntPtr arg0, IntPtr arg1, IntPtr arg2, IntPtr arg3, IntPtr gch)
        {
            Gtk.RowsReorderedArgs args = new Gtk.RowsReorderedArgs ();
            try {
                GLib.Signal sig = ((GCHandle) gch).Target as GLib.Signal;
                if (sig == null)
                    throw new Exception("Unknown signal GC handle received " + gch);

                ListStore sender = GLib.Object.GetObject (arg0) as ListStore;
                args.Args = new object[3];
                args.Args[0] = arg1 == IntPtr.Zero ? null : (Gtk.TreePath) GLib.Opaque.GetOpaque (arg1, typeof (Gtk.TreePath), false);
                args.Args[1] = Gtk.TreeIter.New (arg2);
                int child_cnt = sender.IterNChildren ();
                int[] new_order = new int [child_cnt];
                Marshal.Copy (arg3, new_order, 0, child_cnt);
                args.Args[2] = new_order;
                Gtk.RowsReorderedHandler handler = (Gtk.RowsReorderedHandler) sig.Handler;
                handler (sender, args);
            } catch (Exception e) {
                GLib.ExceptionManager.RaiseUnhandledException (e, false);
            }
        }