summaryrefslogtreecommitdiff
path: root/src/Fl_cutpaste_mac.cxx
diff options
context:
space:
mode:
authorBill Spitzak <spitzak@gmail.com>2002-03-07 19:22:58 +0000
committerBill Spitzak <spitzak@gmail.com>2002-03-07 19:22:58 +0000
commit5f55e1cd63883c8d48a0e212e8910f6dfd536a50 (patch)
tree2249cb0f557d70a897c8c9939ee8df8d036ed14f /src/Fl_cutpaste_mac.cxx
parentcab1dedbd1f7f20d56a7c4bcb781569f03f52422 (diff)
Back-ported cut & paste code from fltk2.0.
This code splits the cut & paste into two buffers. The "SELECTION" is used for the currently highlighted text and for middle-mouse paste and (if possible) for handling drag & drop. The "CLIPBOARD" is for Ctrl+C and Ctrl+V style cut & paste. This matches how Motif, GTK, and KDE 3.0 work. But many older X applications (including KDE 2) can only see SELECTION, this results in cut & paste incompatability that is familiar to X users. However this now moves fltk over to the majority camp. On all systems this eliminates the annoying inability to select a region and replace it with Ctrl+V. On Mac and Win32 the SELECTION is local to the application, so middle-mouse paste only works between fields in the application. There may be tricks (special clipboard data types? use drag & drop?) to make it communicate, but unless there are standards it would be fltk-only. The file Fl_cutpaste.cxx has been deleted, so update the IDE files! The Win32 and Mac versions have NOT BEEN TESTED! I tried to be careful editing them but they may need some work. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@1989 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_cutpaste_mac.cxx')
-rw-r--r--src/Fl_cutpaste_mac.cxx109
1 files changed, 0 insertions, 109 deletions
diff --git a/src/Fl_cutpaste_mac.cxx b/src/Fl_cutpaste_mac.cxx
deleted file mode 100644
index 7633ac6f3..000000000
--- a/src/Fl_cutpaste_mac.cxx
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// "$Id: Fl_cutpaste_mac.cxx,v 1.1.2.4 2002/02/26 00:34:55 matthiaswm Exp $"
-//
-// MacOS cut/paste code for the Fast Light Tool Kit (FLTK).
-//
-// Copyright 1998-2002 by Bill Spitzak and others.
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Library General Public
-// License as published by the Free Software Foundation; either
-// version 2 of the License, or (at your option) any later version.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Library General Public License for more details.
-//
-// You should have received a copy of the GNU Library General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
-// USA.
-//
-// Please report all bugs and problems to "fltk-bugs@fltk.org".
-//
-
-// Implementation of cut and paste for MacOS.
-
-#include <FL/Fl.H>
-#include <FL/mac.H>
-#include <FL/Fl_Window.H>
-#include <string.h>
-
-char *fl_selection_buffer = 0L;
-int fl_selection_length = 0;
-static int selection_buffer_length = 0;
-
-static ScrapRef myScrap = 0;
-
-extern Fl_Widget *fl_selection_requestor; // widget doing request_paste()
-
-/**
- * call this to retrieve the current slection
- * receiver: widget receiving the selection
- * Fl::e_text: pointer to selection
- * Fl::e_length: size of election
- */
-void Fl::paste( Fl_Widget &receiver )
-{
- ScrapRef scrap = 0;
- OSStatus ret = GetCurrentScrap( &scrap );
- if ( ( scrap != myScrap ) && ( ret == noErr ) )
- {
- Size len;
- ret = GetScrapFlavorSize( scrap, kScrapFlavorTypeText, &len );
- if ( ret != noErr ) return;
- if ( len > selection_buffer_length )
- {
- selection_buffer_length = len + 32;
- delete[] fl_selection_buffer;
- fl_selection_buffer = new char[len];
- selection_buffer_length = len;
- }
- GetScrapFlavorData( scrap, kScrapFlavorTypeText, &len, fl_selection_buffer );
- fl_selection_length = len;
- }
- for ( char *s = fl_selection_buffer+fl_selection_length; s >= fl_selection_buffer; s-- ) // this will fail on PC line endings (CR+LF)
- if ( *s == 0x0d ) *s = 0x0a;
- Fl::e_text = fl_selection_buffer;
- Fl::e_length = fl_selection_length;
- receiver.handle( FL_PASTE );
- return;
-}
-
-
-/**
- * create a selection
- * owner: widget that created the selection
- * stuff: pointer to selected data
- * size of selected data
- */
-void Fl::selection( Fl_Widget &owner, const char *stuff, int len ) {
- if ( !stuff || len<0 )
- return;
- if ( len+1 > selection_buffer_length ) {
- delete[] fl_selection_buffer;
- fl_selection_buffer = new char[len+100];
- selection_buffer_length = len+100;
- }
- memcpy( fl_selection_buffer, stuff, len );
- for ( char *s = fl_selection_buffer+len; s >= fl_selection_buffer; s-- ) // this will fail on PC line endings (CR+LF)
- if ( *s == 0x0a ) *s = 0x0d;
- fl_selection_buffer[len] = 0;
- fl_selection_length = len;
- selection_owner( &owner );
-
- ClearCurrentScrap();
- OSStatus ret = GetCurrentScrap( &myScrap );
- if ( ret != noErr )
- {
- myScrap = 0;
- return;
- }
- PutScrapFlavor( myScrap, kScrapFlavorTypeText, 0, fl_selection_length, fl_selection_buffer );
-}
-
-
-//
-// End of "$Id: Fl_cutpaste_mac.cxx,v 1.1.2.4 2002/02/26 00:34:55 matthiaswm Exp $".
-//