feat: move Files to its own process; add window server messaging (multi-format clipboard, drag and drop), undo/redo, sidebar, breadcrumbs, thumbnails, file type icons, New menu and proper text fields
This commit is contained in:
1 parent
07191b1286
commit
d3e49a925d
66 files changed
+6855
-905
No files matched your search
@@ -29,11 +29,13 @@ typedef enum {
|
||||
BufferTooSmall = 13,
|
||||
OutOfMemory = 14,
|
||||
TimedOut = 15,
|
||||
WouldBlock = 16
|
||||
WouldBlock = 16,
|
||||
NotFound = 17,
|
||||
AlreadyExists = 18
|
||||
} StatusCode;
|
||||
|
||||
// Highest defined StatusCode; update when adding a code above.
|
||||
enum { MaxStatusCode = WouldBlock };
|
||||
enum { MaxStatusCode = AlreadyExists };
|
||||
|
||||
inline const char* GetStatusText(StatusCode statusCode) {
|
||||
const char* statusText[] = {
|
||||
@@ -54,6 +56,8 @@ inline const char* GetStatusText(StatusCode statusCode) {
|
||||
"Out of memory", // 14
|
||||
"Timed out", // 15
|
||||
"Operation would block", // 16
|
||||
"Not found", // 17
|
||||
"Already exists", // 18
|
||||
};
|
||||
|
||||
if (statusCode > 0 && statusCode <= MaxStatusCode) {
|
||||
@@ -90,6 +94,8 @@ inline const char* GetStatusExplanationText(StatusCode statusCode) {
|
||||
0, // 14
|
||||
0, // 15
|
||||
0, // 16
|
||||
0, // 17
|
||||
"Something with that name is already there.", // 18
|
||||
};
|
||||
|
||||
if (statusCode > 0 && statusCode <= MaxStatusCode) {
|
||||
|
||||
@@ -795,6 +795,20 @@ namespace montauk {
|
||||
inline int clipboard_clear() {
|
||||
return (int)syscall0(montauk::abi::SYS_CLIPBOARD_CLEAR);
|
||||
}
|
||||
// Multi-format clipboard. The text calls above operate on its
|
||||
// TRANSFER_MIME_TEXT format; gui/transfer.hpp has friendlier helpers.
|
||||
inline int clipboard_set_data(const montauk::abi::TransferItem* items, uint32_t count) {
|
||||
return (int)syscall2(montauk::abi::SYS_CLIPBOARD_SET_DATA, (uint64_t)items, (uint64_t)count);
|
||||
}
|
||||
inline int clipboard_formats(montauk::abi::TransferFormatInfo* out, uint32_t max,
|
||||
uint64_t* outSerial = nullptr) {
|
||||
return (int)syscall3(montauk::abi::SYS_CLIPBOARD_FORMATS, (uint64_t)out, (uint64_t)max,
|
||||
(uint64_t)outSerial);
|
||||
}
|
||||
inline int clipboard_get_data(const char* mime, void* buf, uint32_t bufLen, uint32_t* outLen) {
|
||||
return (int)syscall4(montauk::abi::SYS_CLIPBOARD_GET_DATA, (uint64_t)mime, (uint64_t)buf,
|
||||
(uint64_t)bufLen, (uint64_t)outLen);
|
||||
}
|
||||
|
||||
// Window server
|
||||
inline int win_create(const char* title, int w, int h, montauk::abi::WinCreateResult* result) {
|
||||
@@ -837,4 +851,26 @@ namespace montauk {
|
||||
return (int)syscall2(montauk::abi::SYS_WINSETFLAGS, (uint64_t)id, (uint64_t)flags);
|
||||
}
|
||||
|
||||
// Window server messaging (see Api/Syscall.hpp, gui/transfer.hpp).
|
||||
inline int win_request(int id, const montauk::abi::WinRequest* request) {
|
||||
return (int)syscall2(montauk::abi::SYS_WIN_REQUEST, (uint64_t)id, (uint64_t)request);
|
||||
}
|
||||
inline int win_request_poll(montauk::abi::WinRequest* out) {
|
||||
return (int)syscall1(montauk::abi::SYS_WIN_REQUEST_POLL, (uint64_t)out);
|
||||
}
|
||||
inline int win_drag_begin(int id, const montauk::abi::WinDragBegin* info,
|
||||
const montauk::abi::TransferItem* items, uint32_t count) {
|
||||
return (int)syscall4(montauk::abi::SYS_WIN_DRAG_BEGIN, (uint64_t)id, (uint64_t)info,
|
||||
(uint64_t)items, (uint64_t)count);
|
||||
}
|
||||
inline int win_drag_formats(uint32_t serial, montauk::abi::TransferFormatInfo* out, uint32_t max) {
|
||||
return (int)syscall3(montauk::abi::SYS_WIN_DRAG_FORMATS, (uint64_t)serial, (uint64_t)out,
|
||||
(uint64_t)max);
|
||||
}
|
||||
inline int win_drag_get_data(uint32_t serial, const char* mime, void* buf, uint32_t bufLen,
|
||||
uint32_t* outLen) {
|
||||
return (int)syscall5(montauk::abi::SYS_WIN_DRAG_GET_DATA, (uint64_t)serial, (uint64_t)mime,
|
||||
(uint64_t)buf, (uint64_t)bufLen, (uint64_t)outLen);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in new issue
Block a user