From 7cb97f79c1c4189cd0cdf4cc2cf35d1a3f149374 Mon Sep 17 00:00:00 2001 From: cebix <> Date: Tue, 16 May 2000 17:11:39 +0000 Subject: [PATCH] - added "noclipconversion" prefs item --- BasiliskII/ChangeLog | 8 +++++ BasiliskII/src/AmigaOS/clip_amiga.cpp | 9 +++-- BasiliskII/src/BeOS/clip_beos.cpp | 48 +++++++++++++++++++++------ BasiliskII/src/Unix/clip_unix.cpp | 7 +++- BasiliskII/src/extfs.cpp | 2 +- BasiliskII/src/prefs.cpp | 2 ++ 6 files changed, 61 insertions(+), 15 deletions(-) diff --git a/BasiliskII/ChangeLog b/BasiliskII/ChangeLog index d66c7cf5..61525c23 100644 --- a/BasiliskII/ChangeLog +++ b/BasiliskII/ChangeLog @@ -1,3 +1,11 @@ +V0.8 (snapshot) - + - prefs.cpp: empty string prefs items could be written to prefs file + but not read back correctly + - clip_*.cpp: added prefs item "noclipconversion" for turning off + charset conversion of text clips (only CR->LF gets translated), + [Toshimitsu Tanaka] + - Unix: "--without-mon" configure option now works + V0.8 (snapshot) - 14.Mar.2000 - Unix/video_x.cpp: new window refresh code [Samuel Lander] - Unix/timer_unix.cpp: fixed time zone handling under Linux and SVR4 diff --git a/BasiliskII/src/AmigaOS/clip_amiga.cpp b/BasiliskII/src/AmigaOS/clip_amiga.cpp index 18791965..fb93c19f 100644 --- a/BasiliskII/src/AmigaOS/clip_amiga.cpp +++ b/BasiliskII/src/AmigaOS/clip_amiga.cpp @@ -18,14 +18,16 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "sysdeps.h" + #include #include #include #include #include -#include "sysdeps.h" #include "clip.h" +#include "prefs.h" #define DEBUG 0 #include "debug.h" @@ -35,6 +37,7 @@ static struct IFFHandle *iffw = NULL; static struct ClipboardHandle *ch = NULL; static bool clipboard_open = false; +static bool no_clip_conversion; // Conversion tables @@ -64,6 +67,8 @@ static const uint8 mac2iso[0x80] = { void ClipInit(void) { + no_clip_conversion = PrefsFindBool("noclipconversion"); + // Create clipboard IFF handle iffw = AllocIFF(); if (iffw) { @@ -117,7 +122,7 @@ void PutScrap(uint32 type, void *scrap, int32 length) if (c < 0x80) { if (c == 13) // CR -> LF c = 10; - } else + } else if (!no_clip_conversion) c = mac2iso[c & 0x7f]; *q++ = c; } diff --git a/BasiliskII/src/BeOS/clip_beos.cpp b/BasiliskII/src/BeOS/clip_beos.cpp index 3f3aca7e..e01d55e7 100644 --- a/BasiliskII/src/BeOS/clip_beos.cpp +++ b/BasiliskII/src/BeOS/clip_beos.cpp @@ -18,22 +18,29 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ +#include "sysdeps.h" + #include #include -#include "sysdeps.h" #include "clip.h" +#include "prefs.h" #define DEBUG 1 #include "debug.h" +// Flag: Don't convert clipboard text +static bool no_clip_conversion; + + /* * Initialization */ void ClipInit(void) { + no_clip_conversion = PrefsFindBool("noclipconversion"); } @@ -63,20 +70,39 @@ void PutScrap(uint32 type, void *scrap, int32 length) be_clipboard->Clear(); BMessage *clipper = be_clipboard->Data(); - // Convert text from Mac charset to UTF-8 - int32 dest_length = length*3; - int32 state = 0; - char *buf = new char[dest_length]; - if (convert_to_utf8(B_MAC_ROMAN_CONVERSION, (char *)scrap, &length, buf, &dest_length, &state) == B_OK) { - for (int i=0; iLF + char *buf = new char[dest_length]; + for (int i=0; iAddData("text/plain", B_MIME_TYPE, buf, dest_length); + clipper->AddData("text/plain", B_MIME_TYPE, buf, length); be_clipboard->Commit(); + delete[] buf; + + } else { + + // Convert text from Mac charset to UTF-8 + int32 dest_length = length*3; + int32 state = 0; + char *buf = new char[dest_length]; + if (convert_to_utf8(B_MAC_ROMAN_CONVERSION, (char *)scrap, &length, buf, &dest_length, &state) == B_OK) { + for (int i=0; iAddData("text/plain", B_MIME_TYPE, buf, dest_length); + be_clipboard->Commit(); + } + delete[] buf; } - delete[] buf; be_clipboard->Unlock(); } break; diff --git a/BasiliskII/src/Unix/clip_unix.cpp b/BasiliskII/src/Unix/clip_unix.cpp index 105acb80..08c60a30 100644 --- a/BasiliskII/src/Unix/clip_unix.cpp +++ b/BasiliskII/src/Unix/clip_unix.cpp @@ -23,6 +23,7 @@ #include #include "clip.h" +#include "prefs.h" #define DEBUG 0 #include "debug.h" @@ -52,6 +53,9 @@ static const uint8 mac2iso[0x80] = { 0xaf, 0x20, 0xb7, 0xb0, 0xb8, 0x22, 0xb8, 0x20 }; +// Flag: Don't convert clipboard text +static bool no_clip_conversion; + /* * Initialization @@ -59,6 +63,7 @@ static const uint8 mac2iso[0x80] = { void ClipInit(void) { + no_clip_conversion = PrefsFindBool("noclipconversion"); } @@ -94,7 +99,7 @@ void PutScrap(uint32 type, void *scrap, int32 length) if (c < 0x80) { if (c == 13) // CR -> LF c = 10; - } else + } else if (!no_clip_conversion) c = mac2iso[c & 0x7f]; *q++ = c; } diff --git a/BasiliskII/src/extfs.cpp b/BasiliskII/src/extfs.cpp index 65e86873..7915b8d2 100644 --- a/BasiliskII/src/extfs.cpp +++ b/BasiliskII/src/extfs.cpp @@ -1,5 +1,5 @@ /* - * extfs.cpp - MacOS file system for access native file system access + * extfs.cpp - MacOS file system for native file system access * * Basilisk II (C) 1997-2000 Christian Bauer * diff --git a/BasiliskII/src/prefs.cpp b/BasiliskII/src/prefs.cpp index 7aa2a3d9..4f8f15be 100644 --- a/BasiliskII/src/prefs.cpp +++ b/BasiliskII/src/prefs.cpp @@ -58,6 +58,7 @@ prefs_desc common_prefs_items[] = { {"fpu", TYPE_BOOLEAN, false}, // Enable FPU emulation (main.cpp) {"nocdrom", TYPE_BOOLEAN, false}, // Don't install CD-ROM driver (cdrom.cpp/rom_patches.cpp) {"nosound", TYPE_BOOLEAN, false}, // Don't enable sound output (audio_*.cpp) + {"noclipconversion", TYPE_BOOLEAN, false}, // Don't convert clipboard contents (clip_*.cpp) {"nogui", TYPE_BOOLEAN, false}, // Disable GUI (main_*.cpp) {NULL, TYPE_END, false} // End of list }; @@ -95,6 +96,7 @@ void PrefsInit(void) PrefsAddBool("fpu", false); PrefsAddBool("nocdrom", false); PrefsAddBool("nosound", false); + PrefsAddBool("noclipconversion", false); PrefsAddBool("nogui", false); AddPlatformPrefsDefaults();