Mark TODOs and prep for merging main

This commit is contained in:
Mikayla
2024-02-07 11:39:26 -08:00
parent e3ae7c4fe0
commit 3734a390b2
13 changed files with 77 additions and 15 deletions
+2 -2
View File
@@ -75,11 +75,11 @@ impl BladeBelt {
chunk.into()
}
//Note: assuming T: bytemuck::Zeroable
//todo!(linux): enforce T: bytemuck::Zeroable
pub fn alloc_data<T>(&mut self, data: &[T], gpu: &gpu::Context) -> gpu::BufferPiece {
assert!(!data.is_empty());
let type_alignment = mem::align_of::<T>() as u64;
assert_eq!(
debug_assert_eq!(
self.desc.alignment % type_alignment,
0,
"Type alignment {} is too big",
@@ -411,7 +411,7 @@ impl BladeRenderer {
}
PrimitiveBatch::Paths(paths) => {
let mut encoder = pass.with(&self.pipelines.paths);
//TODO: group by texture ID
//todo!(linux): group by texture ID
for path in paths {
let tile = &self.path_tiles[&path.id];
let tex_info = self.atlas.get_texture_info(tile.texture_id);
+1 -1
View File
@@ -90,7 +90,7 @@ impl PlatformDispatcher for LinuxDispatcher {
fn dispatch_on_main_thread(&self, runnable: Runnable) {
self.main_sender.send(runnable).unwrap();
// Send a message to the invisible window, forcing
// tha main loop to wake up and dispatch the runnable.
// the main loop to wake up and dispatch the runnable.
self.xcb_connection.send_request(&x::SendEvent {
propagate: false,
destination: x::SendEventDest::Window(self.x_listener_window),
+12 -3
View File
@@ -170,14 +170,19 @@ impl Platform for LinuxPlatform {
self.state.lock().quit_requested = true;
}
//todo!(linux)
fn restart(&self) {}
//todo!(linux)
fn activate(&self, ignoring_other_apps: bool) {}
//todo!(linux)
fn hide(&self) {}
//todo!(linux)
fn hide_other_apps(&self) {}
//todo!(linux)
fn unhide_other_apps(&self) {}
fn displays(&self) -> Vec<Rc<dyn PlatformDisplay>> {
@@ -199,6 +204,7 @@ impl Platform for LinuxPlatform {
)))
}
//todo!(linux)
fn active_window(&self) -> Option<AnyWindowHandle> {
None
}
@@ -324,6 +330,7 @@ impl Platform for LinuxPlatform {
unimplemented!()
}
//todo!(linux)
fn set_menus(&self, menus: Vec<Menu>, keymap: &Keymap) {}
fn local_timezone(&self) -> UtcOffset {
@@ -334,14 +341,16 @@ impl Platform for LinuxPlatform {
unimplemented!()
}
//todo!(linux)
fn set_cursor_style(&self, style: CursorStyle) {}
fn should_auto_hide_scrollbars(&self) -> bool {
false
}
//todo!(linux)
fn should_auto_hide_scrollbars(&self) -> bool {}
//todo!(linux)
fn write_to_clipboard(&self, item: ClipboardItem) {}
//todo!(linux)
fn read_from_clipboard(&self) -> Option<ClipboardItem> {
None
}
+26 -2
View File
@@ -29,6 +29,7 @@ struct LinuxTextSystemState {
postscript_names_by_font_id: HashMap<FontId, String>,
}
// todo!(linux): Double check this
unsafe impl Send for LinuxTextSystemState {}
unsafe impl Sync for LinuxTextSystemState {}
@@ -54,33 +55,52 @@ impl Default for LinuxTextSystem {
#[allow(unused)]
impl PlatformTextSystem for LinuxTextSystem {
// todo!(linux)
fn add_fonts(&self, fonts: Vec<Cow<'static, [u8]>>) -> Result<()> {
Ok(()) //TODO
Ok(())
}
// todo!(linux)
fn all_font_names(&self) -> Vec<String> {
Vec::new()
}
// todo!(linux)
fn all_font_families(&self) -> Vec<String> {
Vec::new()
}
// todo!(linux)
fn font_id(&self, descriptor: &Font) -> Result<FontId> {
Ok(FontId(0)) //TODO
Ok(FontId(0))
}
// todo!(linux)
fn font_metrics(&self, font_id: FontId) -> FontMetrics {
unimplemented!()
}
// todo!(linux)
fn typographic_bounds(&self, font_id: FontId, glyph_id: GlyphId) -> Result<Bounds<f32>> {
unimplemented!()
}
// todo!(linux)
fn advance(&self, font_id: FontId, glyph_id: GlyphId) -> Result<Size<f32>> {
unimplemented!()
}
// todo!(linux)
fn glyph_for_char(&self, font_id: FontId, ch: char) -> Option<GlyphId> {
None
}
// todo!(linux)
fn glyph_raster_bounds(&self, params: &RenderGlyphParams) -> Result<Bounds<DevicePixels>> {
unimplemented!()
}
// todo!(linux)
fn rasterize_glyph(
&self,
params: &RenderGlyphParams,
@@ -88,9 +108,13 @@ impl PlatformTextSystem for LinuxTextSystem {
) -> Result<(Size<DevicePixels>, Vec<u8>)> {
unimplemented!()
}
// todo!(linux)
fn layout_line(&self, text: &str, font_size: Pixels, runs: &[FontRun]) -> LineLayout {
LineLayout::default() //TODO
}
// todo!(linux)
fn wrap_line(
&self,
text: &str,
+22
View File
@@ -77,6 +77,7 @@ pub(crate) struct LinuxWindowState {
#[derive(Clone)]
pub(crate) struct LinuxWindow(pub(crate) Arc<LinuxWindowState>);
//todo!(linux): Remove other RawWindowHandle implementation
unsafe impl blade_rwh::HasRawWindowHandle for RawWindow {
fn raw_window_handle(&self) -> blade_rwh::RawWindowHandle {
let mut wh = blade_rwh::XcbWindowHandle::empty();
@@ -287,10 +288,12 @@ impl PlatformWindow for LinuxWindow {
self.0.inner.lock().scale_factor
}
//todo!(linux)
fn titlebar_height(&self) -> Pixels {
unimplemented!()
}
//todo!(linux)
fn appearance(&self) -> WindowAppearance {
unimplemented!()
}
@@ -299,10 +302,12 @@ impl PlatformWindow for LinuxWindow {
Rc::clone(&self.0.display)
}
//todo!(linux)
fn mouse_position(&self) -> Point<Pixels> {
Point::default()
}
//todo!(linux)
fn modifiers(&self) -> crate::Modifiers {
crate::Modifiers::default()
}
@@ -311,12 +316,15 @@ impl PlatformWindow for LinuxWindow {
self
}
//todo!(linux)
fn set_input_handler(&mut self, input_handler: PlatformInputHandler) {}
//todo!(linux)
fn take_input_handler(&mut self) -> Option<PlatformInputHandler> {
None
}
//todo!(linux)
fn prompt(
&self,
_level: crate::PromptLevel,
@@ -327,24 +335,36 @@ impl PlatformWindow for LinuxWindow {
unimplemented!()
}
//todo!(linux)
fn activate(&self) {}
//todo!(linux)
fn set_title(&mut self, title: &str) {}
//todo!(linux)
fn set_edited(&mut self, edited: bool) {}
//todo!(linux), this corresponds to `orderFrontCharacterPalette` on macOS,
// but it looks like the equivalent for Linux is GTK specific:
//
// https://docs.gtk.org/gtk3/signal.Entry.insert-emoji.html
//
// This API might need to change, or we might need to build an emoji picker into GPUI
fn show_character_palette(&self) {
unimplemented!()
}
//todo!(linux)
fn minimize(&self) {
unimplemented!()
}
//todo!(linux)
fn zoom(&self) {
unimplemented!()
}
//todo!(linux)
fn toggle_full_screen(&self) {
unimplemented!()
}
@@ -385,10 +405,12 @@ impl PlatformWindow for LinuxWindow {
self.0.callbacks.lock().appearance_changed = Some(callback);
}
//todo!(linux)
fn is_topmost_for_position(&self, _position: crate::Point<Pixels>) -> bool {
unimplemented!()
}
//todo!(linux)
fn invalidate(&self) {}
fn draw(&self, scene: &crate::Scene) {