fluix 0.1.15

A comprehensive UI component library for GPUI 0.2 - Modern, performant, and type-safe
Documentation
# Known Limitations

本文档记录 Fluix 组件库在使用 GPUI 框架时遇到的已知限制。

## TextArea 组件

### 鼠标拖拽选择文本的限制

**问题描述:**
无法实现精确的鼠标拖拽选择文本功能。

**技术原因:**
GPUI 0.2.2 的 `MouseDownEvent` 和 `MouseMoveEvent` 中的 `position` 字段类型为 `Point<Pixels>`,但 `Pixels` 结构体的内部字段是私有的:

```rust
pub struct Pixels(f32);  // 字段 `0` 是私有的
```

这导致无法直接访问鼠标的 x/y 坐标值来计算点击位置对应的字符索引。

**尝试的代码:**
```rust
// ❌ 编译错误:field `0` of struct `gpui::Pixels` is private
let x = event.position.x.0;
let y = event.position.y.0;
```

**当前解决方案:**
实现了以下替代交互方式:
- ✅ 单击:清除选择并聚焦
- ✅ 双击:选择全部文本
- ✅ Cmd/Ctrl+A:键盘快捷键全选
- ✅ 选中高亮:蓝色背景显示

**未来展望:**
如果 GPUI 未来版本提供以下任一方式,即可实现完整的鼠标选择功能:
1. `Pixels` 的字段设为公开
2. 添加 `pub fn value(&self) -> f32` 方法
3. 实现 `Deref<Target = f32>` trait
4. 提供专门的坐标访问 API

**相关链接:**
- GPUI GitHub: https://github.com/zed-industries/zed
- GPUI 版本: 0.2.2

**记录时间:** 2025-10-25

---

## 如何贡献

如果你发现此限制已被解决或有其他解决方案,欢迎提交 Issue 或 Pull Request!