forked from GSoC/sdl-2.30.3-kolibri
2
Makefile
2
Makefile
@@ -82,7 +82,7 @@ video_OBJS = src/video/SDL_blit_0.o src/video/SDL_blit_1.o src/video/SDL_blit_A.
|
|||||||
src/video/yuv2rgb/yuv_rgb_sse.o src/video/yuv2rgb/yuv_rgb_std.o \
|
src/video/yuv2rgb/yuv_rgb_sse.o src/video/yuv2rgb/yuv_rgb_std.o \
|
||||||
src/video/kolibri/SDL_kolibrievents.o src/video/kolibri/SDL_kolibriframebuffer.o \
|
src/video/kolibri/SDL_kolibrievents.o src/video/kolibri/SDL_kolibriframebuffer.o \
|
||||||
src/video/kolibri/SDL_kolibrivideo.o src/video/kolibri/SDL_kolibriwindow.o \
|
src/video/kolibri/SDL_kolibrivideo.o src/video/kolibri/SDL_kolibriwindow.o \
|
||||||
src/video/kolibri/SDL_kolibrimouse.o
|
src/video/kolibri/SDL_kolibrimouse.o src/video/kolibri/SDL_kolibriclipboard.o
|
||||||
|
|
||||||
curr_OBJS = src/SDL_assert.o src/SDL_dataqueue.o src/SDL_error.o src/SDL_guid.o \
|
curr_OBJS = src/SDL_assert.o src/SDL_dataqueue.o src/SDL_error.o src/SDL_guid.o \
|
||||||
src/SDL_hints.o src/SDL_list.o src/SDL_log.o src/SDL_utils.o src/SDL.o
|
src/SDL_hints.o src/SDL_list.o src/SDL_log.o src/SDL_utils.o src/SDL.o
|
||||||
|
60
src/video/kolibri/SDL_kolibriclipboard.c
Normal file
60
src/video/kolibri/SDL_kolibriclipboard.c
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
|
||||||
|
#include "../../SDL_internal.h"
|
||||||
|
|
||||||
|
#ifdef SDL_VIDEO_DRIVER_KOLIBRI
|
||||||
|
|
||||||
|
#include <sys/ksys.h>
|
||||||
|
|
||||||
|
#define string_length(x) SDL_strlen(x) + 1
|
||||||
|
|
||||||
|
#include "../SDL_sysvideo.h"
|
||||||
|
|
||||||
|
char *KOLIBRI_GetClipboardText(_THIS)
|
||||||
|
{
|
||||||
|
int clip_num = _ksys_clip_num();
|
||||||
|
char *clip_buf, *result;
|
||||||
|
|
||||||
|
if (clip_num > 0) {
|
||||||
|
clip_buf = _ksys_clip_get(clip_num - 1);
|
||||||
|
if ((int)*clip_buf > 0 && (int)*(clip_buf + 4) == KSYS_CLIP_TEXT && ((int)*(clip_buf + 8) == KSYS_CLIP_CP866)) {
|
||||||
|
char *clip_text = clip_buf + 12;
|
||||||
|
|
||||||
|
result = SDL_calloc((int)*clip_buf, sizeof(char));
|
||||||
|
SDL_strlcpy(result, clip_text, (int)*clip_buf);
|
||||||
|
_ksys_free(clip_buf);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!result)
|
||||||
|
result = SDL_strdup("");
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int KOLIBRI_SetClipboardText(_THIS, const char *text)
|
||||||
|
{
|
||||||
|
char *temp_buffer = SDL_calloc(string_length(text) + 12, sizeof(char));
|
||||||
|
|
||||||
|
*temp_buffer = string_length(text);
|
||||||
|
*(temp_buffer + 4) = KSYS_CLIP_TEXT;
|
||||||
|
*(temp_buffer + 8) = KSYS_CLIP_CP866;
|
||||||
|
|
||||||
|
SDL_strlcpy(temp_buffer + 12, text, string_length(text));
|
||||||
|
_ksys_clip_set(string_length(text) + 12, temp_buffer);
|
||||||
|
SDL_free(temp_buffer);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
SDL_bool KOLIBRI_HasClipboardText(_THIS)
|
||||||
|
{
|
||||||
|
SDL_bool result = SDL_FALSE;
|
||||||
|
char *text = KOLIBRI_GetClipboardText(_this);
|
||||||
|
if (text) {
|
||||||
|
result = text[0] != '\0' ? SDL_TRUE : SDL_FALSE;
|
||||||
|
SDL_free(text);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
11
src/video/kolibri/SDL_kolibriclipboard.h
Normal file
11
src/video/kolibri/SDL_kolibriclipboard.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
|
||||||
|
#include "../../SDL_internal.h"
|
||||||
|
|
||||||
|
#ifndef SDL_kolibriclipboard_h_
|
||||||
|
#define SDL_kolibriclipboard_h_
|
||||||
|
|
||||||
|
extern char *KOLIBRI_GetClipboardText(_THIS);
|
||||||
|
extern int KOLIBRI_SetClipboardText(_THIS, const char *text);
|
||||||
|
extern SDL_bool KOLIBRI_HasClipboardText(_THIS);
|
||||||
|
|
||||||
|
#endif
|
@@ -10,6 +10,7 @@
|
|||||||
#include "../SDL_sysvideo.h"
|
#include "../SDL_sysvideo.h"
|
||||||
#include "SDL_video.h"
|
#include "SDL_video.h"
|
||||||
|
|
||||||
|
#include "SDL_kolibriclipboard.h"
|
||||||
#include "SDL_kolibrievents.h"
|
#include "SDL_kolibrievents.h"
|
||||||
#include "SDL_kolibriframebuffer.h"
|
#include "SDL_kolibriframebuffer.h"
|
||||||
#include "SDL_kolibrimouse.h"
|
#include "SDL_kolibrimouse.h"
|
||||||
@@ -95,6 +96,11 @@ static SDL_VideoDevice *KOLIBRI_CreateDevice(void)
|
|||||||
device->SetWindowTitle = KOLIBRI_SetWindowTitle;
|
device->SetWindowTitle = KOLIBRI_SetWindowTitle;
|
||||||
device->DestroyWindow = KOLIBRI_DestroyWindow;
|
device->DestroyWindow = KOLIBRI_DestroyWindow;
|
||||||
|
|
||||||
|
/* Clipboard */
|
||||||
|
device->HasClipboardText = KOLIBRI_HasClipboardText;
|
||||||
|
device->GetClipboardText = KOLIBRI_GetClipboardText;
|
||||||
|
device->SetClipboardText = KOLIBRI_SetClipboardText;
|
||||||
|
|
||||||
/* KolibriOS specific data */
|
/* KolibriOS specific data */
|
||||||
device->driverdata = data;
|
device->driverdata = data;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user