Comments (7)
What is the i32
for in here?
from gio.
i32 is n_files - count of files in [File] array
as i understand **GFile is not finished with null value
from gio.
Yes, that's my point. n_files
is useless in Rust since it's supposed to be the length of the slice.
from gio.
Ok, but how to implement this properly? Gir generator does not support such kind of thing? Does it need to implement this manually? Or maybe some converter already exists?
from gio.
I wonder. I think we already did it but not sure if it was in gir or manually...
cc @EPashkin
from gio.
Yes, this need be manual. Something like this:
impl<O: IsA<Application> + IsA<glib::object::Object>> ApplicationExtManual for O {
fn connect_open<F: Fn(&Self, &[File], &str) + 'static>(&self, f: F) -> u64 {
unsafe {
let f: Box_<Box_<Fn(&Self, &[File], &str) + 'static>> = Box_::new(Box_::new(f));
connect(self.to_glib_none().0, "open",
transmute(open_trampoline::<Self> as usize), Box_::into_raw(f) as *mut _)
}
}
}
unsafe extern "C" fn open_trampoline<P>(this: *mut ffi::GApplication, files: *const *mut ffi::GFile, n_files: libc::c_int, hint: *mut libc::c_char, f: glib_ffi::gpointer)
where P: IsA<Application> {
callback_guard!();
let f: &Box_<Fn(&P, &[File], &str) + 'static> = transmute(f);
let files: Vec<File> = FromGlibPtrContainer::from_glib_none_num(files, n_files as usize);
f(&Application::from_glib_none(this).downcast_unchecked(), &files[..], &String::from_glib_none(hint))
}
from gio.
Thanks, i try 😄
from gio.
Related Issues (20)
- Idea for "magical" strings HOT 6
- Add GPropertyAction HOT 3
- Unable to write bytes to IOStream using futures HOT 4
- How to convert Vec<GString> into Vec<String> HOT 6
- Missing Permission::new() HOT 5
- Manual bindings for functions with Cancellable args are inconsistent HOT 4
- Implement AppInfo::launch_uris_async
- Wrong mutability in UnixMountPoint HOT 1
- Don't require all users of `GioFuture` to depend on `fragile` HOT 1
- GIO is trying to list g_desktop_app_info* on macos and causing link failure HOT 1
- DataInputStream::read_until_async asserts when empty HOT 6
- Add check to ensure that no manual_trait is forgotten HOT 5
- ApplicationExt::connect_handle_local_options() is missing HOT 7
- Implement an AsyncBufRead adapter for InputStream HOT 9
- ThreadedSocketService panics while accepting connection HOT 4
- Bind GIOChannel HOT 3
- How to use async reqwest HTTP client from gio event loop? HOT 3
- InetAddress <-> standard library IpAddr* types conversion
- `TimeVal` usage is wrong and maybe shouldn't be there at all HOT 1
- No TlsBackend? HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gio.