Index: /trunk/SophyaPI/PI/picons.cc
===================================================================
--- /trunk/SophyaPI/PI/picons.cc	(revision 78)
+++ /trunk/SophyaPI/PI/picons.cc	(revision 79)
@@ -45,4 +45,16 @@
 mOffL = 0;
 mNCmdL = 0;
+
+// Pile de rappel des commandes 
+mRStr = NULL;
+mNComm = NMxRecall = 0;
+mRCindx = mRindx = 0;
+
+// Copier/coller
+mCPBuffer = NULL;
+mCPBufLen = 0;
+mCPbeginC =  mCPendC = 0;
+mCPbeginL = mCPendL = 0;
+
 SetPrompt("Cmd> ");
 ClrCmd();
@@ -140,5 +152,5 @@
 
 /* --Methode-- */
-void PIConsole::SelectFont(PIFontSize sz)
+void PIConsole::SelectFont(PIFontSize sz, bool autosz)
 {
 int asc, desc;
@@ -146,8 +158,9 @@
 mFTaille = sz;
 mFHaut = mWGrC->GetFontHeight(asc, desc);
-mFLarg = mWGrC->CalcStringWidth("A");
+mFLarg = (int)mWGrC->CalcStringWidth("ABCDEFGHIJ")/10;
 mWSzL = YSize()/mFHaut - 1;
-mWSzC = XSize()/mFLarg - 1;
+mWSzC = XSize()/mFLarg - 2;
 mOffL = 0;
+if (autosz) SetSize((mWSzC+2)*mFLarg, (mWSzL+1)*mFHaut);
 if (mScb) {
   mScb->SetMinMax(0, NbLines()-1);
@@ -157,6 +170,7 @@
 }
 
-/* --Methode-- */
-void PIConsole::AcceptCmd(bool acc)
+
+/* --Methode-- */
+void PIConsole::AcceptCmd(bool acc, int nmxrec)
 {
 int l1, l2;
@@ -169,4 +183,9 @@
   UpdCmdLine();
   l2 = mNL-1;
+  if (nmxrec > 0) {
+    NMxRecall = (nmxrec > 5) ? nmxrec : 5;
+    mRStr = new string[NMxRecall];
+    mNComm = mRCindx = mRindx = 0;
+    }
   }
 else {
@@ -176,4 +195,6 @@
   ClrCmd();
   l1 = l2 = mNL-1;
+  delete[] mRStr;
+  mRCindx = mRindx = 0;
   }
 DisplayLines(mWGrC, l1, l2);
@@ -218,6 +239,6 @@
 void PIConsole::Resize()
 {
-mWSzL = YSize()/mFHaut-1;
-mWSzC = XSize()/mFLarg-1;
+mWSzL = YSize()/mFHaut - 1;
+mWSzC = XSize()/mFLarg - 2;
 if (mScb) {
   mScb->SetMinMax(0, NbLines()-1);
@@ -241,5 +262,102 @@
 {
 
-
+if (mNCmdL < 1)  return;
+
+int k;
+bool fgfk = false;
+
+if (kmod == PIKM_Cntl) {
+  switch (key) {
+    case 1 :  // <Cntl> A
+      mCCP = 0;
+      break;
+    case 5 :  // <Cntl> E
+      mCCP = mCLC;
+      break;
+    case 11 :  // <Cntl> K
+      mCLC = mCCP;
+      break;
+    }
+  }
+
+else if (kmod == PIKM_Alt) {
+  if (key == 'V' || key == 'v') RequestSelection();  // Pour coller (copier/coller)
+  else if (key == 'A' || key == 'a') {  // Pour tout selectionner
+    if (ClaimSelection()) {   // Definition de la zone de copie
+      SelectionLost();
+      mCPbeginC = 0; mCPendC = mNC; 
+      mCPbeginL = mNL-mWSzL-mOffL;  mCPendL = mNL-mOffL; 
+      }
+    else  mCPbeginC =  mCPendC = mCPbeginL = mCPendL = 0;
+    }
+  }
+
+else if (kmod == PIKM_Blank) {
+  switch (key) {
+    case PIK_Return :    
+    case PIK_Enter :
+      mCmdStr[mCLC] = '\0';
+//      printf("Process()-Debug- <CR/Enter> CmdStr= %s (L=%d)\n", mCmdStr, strlen(mCmdStr) );
+
+// Gestion de rappel des commandes 
+      mRStr[mRCindx] = mCmdStr;
+      mRCindx++;  mNComm++;
+      if (mRCindx >= NMxRecall)  mRCindx = 0;
+      mRindx = mRCindx;
+      
+      Send( Msg(), PIMsg_OK, mCmdStr);
+      ClrCmd();
+      break;
+
+    case PIK_BackSpace :
+    case 127 :    // Touche del
+    case 8 :      // Touche backspace
+      if (mCCP > 0)  { 
+        for(k=mCCP-1; k<mCLC-1; k++)  mCmdStr[k] = mCmdStr[k+1];
+        mCmdStr[mCLC-1] = ' ';   mCCP--;  mCLC--;
+      }
+      //      printf("Process()-Debug- Backspace CCP,CLC= %d %d CmdStr= %s (L=%d) \n", mCCP, mCLC, 
+      //      mCmdStr, strlen(mCmdStr));
+      break;
+      
+    case PIK_Up :
+    case PIK_Down :
+      printf("Process()-Debug- CursorUp/Down(%d)  Index= %d %d  \n", key, mRindx, mRCindx);
+      if (mNComm > 0) {
+        int nmxrec = (mNComm < NMxRecall) ? mNComm : NMxRecall;
+        if (key == PIK_Up)  {
+          mRindx--; 
+          if (mRindx < 0)  mRindx = 0;
+          }
+        else { 
+          mRindx++;
+          if (mRindx >= nmxrec) mRindx= nmxrec-1;
+          }
+        mCLC = mCCP = mRStr[mRindx].length();
+        for(k=0; k< mCLC; k++)  mCmdStr[k] =  mRStr[mRindx][k];
+        mCmdStr[mCLC] = '\0';      
+        }      
+      break;
+
+    case PIK_Left :
+      if (mCCP > 0)  mCCP--;
+      //      printf("Process()-Debug- Left CCP,CLC= %d %d  \n", mCCP, mCLC);
+      break;
+    case PIK_Right :
+      if (mCCP < mCLC)  mCCP++;
+      //      printf("Process()-Debug- Right CCP,CLC= %d %d  \n", mCCP, mCLC);
+      break;
+    default :
+      fgfk = true;
+      break;
+    }
+  }
+if ( ( fgfk && (kmod == PIKM_Blank) ) || (kmod == PIKM_Shift)  ) CmdAddChar(key);
+UpdCmdLine();
+// DisplayLines(mNL-1, mNL-1);
+return;
+}
+
+/*   Pour debugger le code - Reza 23/02/98 
 #ifdef DEBUG_PICONS
 if ( (kmod == PIKM_Alt) ) {
@@ -299,70 +417,5 @@
 }
 #endif
-
-if (mNCmdL < 1)  return;
-
-int k;
-bool fgfk = false;
-
-if (kmod == PIKM_Cntl) {
-  switch (key) {
-    case 'A' :
-    case 'a' :
-      mCCP = 0;
-      break;
-    case 'E' :
-    case 'e' :
-      mCCP = mCLC;
-      break;
-    case 'K' :
-    case 'k' :
-      mCLC = mCCP;
-      break;
-    }
-  }
-
-else if (kmod == PIKM_Alt) {
-  if (key == 'V' || key == 'v') RequestSelection();  // Pour coller (copier/coller)
-  }
-
-else if (kmod == PIKM_Blank) {
-  switch (key) {
-    case PIK_Return :    
-    case PIK_Enter :
-      mCmdStr[mCLC] = '\0';
-//      printf("Process()-Debug- <CR/Enter> CmdStr= %s (L=%d)\n", mCmdStr, strlen(mCmdStr) );
-      Send( Msg(), PIMsg_OK, mCmdStr);
-      ClrCmd();
-      break;
-
-    case PIK_BackSpace :
-    case 127 :    // Touche del
-    case 8 :      // Touche backspace
-      if (mCCP > 0)  { 
-        for(k=mCCP-1; k<mCLC-1; k++)  mCmdStr[k] = mCmdStr[k+1];
-        mCmdStr[mCLC-1] = ' ';   mCCP--;  mCLC--;
-      }
-      //      printf("Process()-Debug- Backspace CCP,CLC= %d %d CmdStr= %s (L=%d) \n", mCCP, mCLC, 
-      //      mCmdStr, strlen(mCmdStr));
-      break;
-    case PIK_Left :
-      if (mCCP > 0)  mCCP--;
-      //      printf("Process()-Debug- Left CCP,CLC= %d %d  \n", mCCP, mCLC);
-      break;
-    case PIK_Right :
-      if (mCCP < mCLC)  mCCP++;
-      //      printf("Process()-Debug- Right CCP,CLC= %d %d  \n", mCCP, mCLC);
-      break;
-    default :
-      fgfk = true;
-      break;
-    }
-  }
-if ( ( fgfk && (kmod == PIKM_Blank) ) || (kmod == PIKM_Shift)  ) CmdAddChar(key);
-UpdCmdLine();
-// DisplayLines(mNL-1, mNL-1);
-return;
-}
-
+*/
 
 /* --Methode-- 
@@ -387,4 +440,47 @@
 for(i=0; i<l; i++) CmdAddChar(pc[i]);
 UpdCmdLine();
+}
+
+/* --Methode-- */
+void PIConsole::SelectionLost()
+{
+// printf("Debug PIConsole::SelectionLost() %lx (L=%d)\n",(long)mCPBuffer, mCPBufLen);
+if (mCPBuffer) delete[] mCPBuffer;  
+mCPBuffer = NULL;
+mCPBufLen = 0;
+mCPbeginC =  mCPendC = 0;
+mCPbeginL = mCPendL = 0;
+}
+
+/* --Methode-- */
+void PIConsole::SelectionTransferEnd()
+{
+// printf("Debug PIConsole::SelectionTransferEnd() -Rien- %lx (L=%d)\n",(long)mCPBuffer, mCPBufLen);
+}
+
+
+/* --Methode-- */
+void * PIConsole::ProvideSelection(unsigned int& typ, unsigned int& len)
+{
+typ = PICP_string;
+if (!mCPBuffer) {  // Il faut effectuer la copie
+  int l = (mCPendC-mCPbeginC+1) * (mCPendL-mCPbeginL);
+  if (l < 1) l = 1;
+  mCPBufLen = l;
+  mCPBuffer = new char[l+1];
+  int i,j,k;
+  k = 0;  
+  for(j=mCPbeginL; j<mCPendL; j++) { 
+    for(i=mCPbeginC; i<mCPendC; i++)  
+      { mCPBuffer[k] = mText[mLPo[j]+i]; k++; }
+    mCPBuffer[k] = '\n'; k++;
+    }
+  mCPBuffer[l] = '\0';
+  }
+// printf("PIConsole::ProvideSelection() %d-%d %d-%d -> %d (%lx)\n", mCPbeginL, mCPendL, mCPbeginC, mCPendC, 
+//       mCPBufLen,(long) mCPBuffer);
+int i; for(i=0; i<40; i++) putchar(mCPBuffer[i]);  printf("\n");
+len = mCPBufLen;
+return(mCPBuffer);
 }
 
@@ -404,5 +500,5 @@
 }
 
-/* --Methode-- */
+/* --Methode-- 
 void PIConsole::DebugPrint(int lp)
 {
@@ -421,4 +517,5 @@
 return;
 }
+*/
 
 /* --Methode-- */
@@ -468,12 +565,21 @@
 bgc =  g->GetBackground();
 
-l0 = mNL-mWSzL-1-mOffL;
+int dx = mFLarg;
+int dy = mFHaut/2;
+int dxo2 = dx/2;
+if (dxo2 > 3)  dxo2 = 3;
+int dyo2 = dy/2;
+if (dyo2 > 3)  dyo2 = 3;
+
+g->DrawBox(dxo2, dyo2, (mNC+2)*mFLarg-2*dxo2, (mWSzL+1)*mFHaut-dyo2);
+
+l0 = mNL-mWSzL-mOffL;
 if (l0 < 0) l0 = 0;
 if (l1 < l0) l1 = l0;
-if (l2 > mNL-mOffL-1) l2 =  mNL-mOffL-1;
-
-for(l=l1; l<=l2; l++) {
- y = (l-l0+0.5)*mFHaut;
- k = 0;   x = 0.5*mFLarg;
+if (++l2 > mNL-mOffL) l2 =  mNL-mOffL;
+
+for(l=l1; l<l2; l++) {
+ y = (l-l0+1)*mFHaut+dy;
+ k = 0;   x = dx;
  for(j=0; j<mNC; j++) {
    if (mAtt[mLPo[l]+j] != lva) {
@@ -530,5 +636,5 @@
 for(j=0; j<j1; j++) {
   mText[mLPo[mNL-1]+j] = mPrompt[j];
-  mAtt[mLPo[mNL-1]+j] = PIVA_Bold;
+  mAtt[mLPo[mNL-1]+j] = PIVA_Ital;
   strg[j] = mPrompt[j];  
   }  
@@ -543,5 +649,5 @@
 for(j=j1; j<j2; j++) {
   mText[mLPo[mNL-1]+j] = mCmdStr[k];
-  mAtt[mLPo[mNL-1]+j] = PIVA_Def;
+  mAtt[mLPo[mNL-1]+j] = PIVA_Bold;
   strg[j] = mCmdStr[k];  
   k++;
@@ -566,6 +672,6 @@
 {
 int off;
-printf("PIConsole::Process() UserMsg()= %d ModMsg= %d \n", (int)UserMsg(msg), 
-       (int)ModMsg(msg) );
+// printf("PIConsole::Process() UserMsg()= %d ModMsg= %d \n", (int)UserMsg(msg), 
+//        (int)ModMsg(msg) );
 
 if (sender == opmc) { // Menu des options 
@@ -599,5 +705,5 @@
 else if ((ModMsg(msg) == PIMsg_DataChanged) && (UserMsg(msg) == msgScb) ) {
   off = (int)data;
-  printf(" PIConsole::Process() From ScrollBar : Off=%d \n ", off);
+//  printf(" PIConsole::Process() From ScrollBar : Off=%d \n ", off);
   SetDispOffset(off);
   Refresh();
Index: /trunk/SophyaPI/PI/picons.h
===================================================================
--- /trunk/SophyaPI/PI/picons.h	(revision 78)
+++ /trunk/SophyaPI/PI/picons.h	(revision 79)
@@ -23,12 +23,12 @@
           void       AddChar(char c, unsigned char va= PIVA_Def, bool ref=true);
           void       AddStr(char* strg, unsigned char va= PIVA_Def, bool ref=true);
-//          void       MoveCursor(int il, int jc);
-//          void       DelChar(int il, int jc); 
 
-          void       SelectFont(PIFontSize sz=PI_NormalSizeFont);
-          void       AcceptCmd(bool acc=true);
+          void       SelectFont(PIFontSize sz=PI_NormalSizeFont, bool autosz=true);
+          void       AcceptCmd(bool acc=true, int nrecmx=20);
           void       SetPrompt(char* prompt); 
+
   inline  int        WindNbLines() { return mWSzL; }
   inline  int        NbLines() { return mNL; }
+
           void       SetDispOffset(int ldeb=-1);
           void       AssocScrollBar(PIScrollBar* scb);
@@ -39,9 +39,10 @@
   virtual void       Resize();
   virtual void       Keyboard(int key, PIKeyModifier kmod);
-//  virtual void       But1Press(int x, int y);
   virtual void       But3Press(int x, int y);
+
   virtual void       PasteSelection(unsigned int typ, void *pdata, unsigned int l);
-
-          void       DebugPrint(int cont=0);
+  virtual void*      ProvideSelection(unsigned int& typ, unsigned int& len);
+  virtual void       SelectionLost();
+  virtual void       SelectionTransferEnd();
 
 protected:
@@ -72,4 +73,15 @@
   int mCCP, mCLC;       // Position du curseur, longeur de la commande
 
+// Pour le rappel des commandes
+  int NMxRecall, mNComm;    // Profondeur de la pile de rappels, nb de commandes
+  string * mRStr;           // Stockage des chaines 
+  int mRCindx, mRindx;      // Index pour le rappel
+  
+// Gestion du buffer de copie
+  char* mCPBuffer;
+  unsigned int mCPBufLen;
+  int mCPbeginC, mCPbeginL;
+  int mCPendC, mCPendL;
+  
 // S il y a un scroll-bar associe
   PIScrollBar* mScb;
@@ -96,4 +108,5 @@
   inline  void       SetPrompt(char* prompt) 
                              { mCons->SetPrompt(prompt); }
+  inline  string     GetCmdString() { return(mCons->GetCmdString()); }
 
   inline  void       Refresh() { mCons->Refresh(); }
Index: /trunk/SophyaPI/PI/pigraphx.cc
===================================================================
--- /trunk/SophyaPI/PI/pigraphx.cc	(revision 78)
+++ /trunk/SophyaPI/PI/pigraphx.cc	(revision 79)
@@ -8,7 +8,7 @@
 
 /*  Variables globales pour modifier les GC  */
-#define NMAXFONTSZ  5
+#define NMAXFONTSZ  7
 static XFontStruct * fntst[NMAXFONTSZ][3];
-static int fntsz[NMAXFONTSZ] = {8,10,12,14,16};
+static int fntsz[NMAXFONTSZ] = {8,10,12,14,16,20,24};
 static  PIFontAtt fntatt[3] = { PI_RomanFont, PI_BoldFont, PI_ItalicFont }; 
 #define NMAXCOL  10
@@ -358,11 +358,11 @@
   {
   case PI_SmallSizeFont:
-    i = 0;
+    i = 1;
     break;
   case PI_NormalSizeFont:
-    i = 2;
+    i = 3;
     break;
   case PI_BigSizeFont:
-    i = 4;
+    i = 5;
     break;
   default:
@@ -550,5 +550,5 @@
 static XtResource resources[] = {
   { "fontFamilyName", "FontFamilyName", XtRString, sizeof(String),
-    /*XtOffset(apdp, fntFam)*/ 0, XtRString, "*-helvetica" }
+    /*XtOffset(apdp, fntFam)*/ 0, XtRString, "*-courier" }
 };
  
@@ -585,7 +585,7 @@
 if (count < 5)
   { 
-  printf("PIGraphicX::Init %d fonts found for %s , switching to helvetica\n",
+  printf("PIGraphicX::Init %d fonts found for %s , switching to courier\n",
          count, apd.fntFam);
-  apd.fntFam = "*-helvetica";
+  apd.fntFam = "*-courier";
   }
 sprintf(buff,"-%s-%s-*-*-*-*-*-*-*-*-*", apd.fntFam, fnbi_b[0]);
Index: /trunk/SophyaPI/PI/pihisto2d.cc
===================================================================
--- /trunk/SophyaPI/PI/pihisto2d.cc	(revision 78)
+++ /trunk/SophyaPI/PI/pihisto2d.cc	(revision 79)
@@ -28,4 +28,5 @@
   if (!mDrawer) return;
   if (mDrawer->LimitsFixed()) return;
+  if (!mHisto)  return;
   // Commencer par trouver nos limites
   
@@ -48,4 +49,5 @@
 PIHisto2D::Draw(PIGraphicUC* g, float /*xmin*/, float /*ymin*/, float /*xmax*/, float /*ymax*/)
 {
+  if (!mHisto)  return;
   float hmin = mHisto->VMin();
   float hmax = mHisto->VMax();
@@ -155,6 +157,13 @@
 {
 int i,j;
+char str[128];
+
+if ((!mPih) || (!mPih->Histogram())) {
+  sprintf(str,"X=%g Y=%g ???",x,y);
+  return((string)str); 
+}
+
 Histo2D* h = mPih->Histogram();
-char str[128];
+
 
 h->FindBin(x,y,i,j);
@@ -169,5 +178,5 @@
 {
 //printf("PIH2DWdg::Process(%d-%d , %lx ...) \n", UserMsg(msg), ModMsg(msg), (long)sender);
-
+if (!mPih) return;
 if (sender == optmenh2d) { // On n'attend de message que de la part du menu 
   int opt=6101;
Index: /trunk/SophyaPI/PI/pistdwdgx.cc
===================================================================
--- /trunk/SophyaPI/PI/pistdwdgx.cc	(revision 78)
+++ /trunk/SophyaPI/PI/pistdwdgx.cc	(revision 79)
@@ -485,5 +485,5 @@
 int n=0;
 if (val < mMin)  val = mMin;
-if (val > mMax)  val = mMax;
+if (val > mMax-mSz)  val = mMax-mSz;
 Arg warg[2];
 XtSetArg(warg[n], XmNvalue, val); n++;
@@ -509,5 +509,5 @@
 {
 int n=0;
-Arg warg[3];
+Arg warg[4];
 int szl;
 
@@ -522,4 +522,8 @@
 XtSetArg(warg[n], XmNpageIncrement, sz); n++;
 XtSetArg(warg[n], XmNincrement, szl); n++;
+if (mVal > mMax-sz) { 
+  mVal = mMax-sz;
+  XtSetArg(warg[n], XmNvalue, mVal); n++;
+  }
 XtSetValues(this->sdw, warg, n);
 mSz = sz;
Index: /trunk/SophyaPI/PI/piwdgx.cc
===================================================================
--- /trunk/SophyaPI/PI/piwdgx.cc	(revision 78)
+++ /trunk/SophyaPI/PI/piwdgx.cc	(revision 79)
@@ -502,8 +502,8 @@
 if (*targ != XA_STRING)  return(FALSE);
 if (!curselwdg)  return(FALSE);
-int l = 0;
-int styp = reqseltype;
-*value = curselwdg->ProvideSelection(styp, l);
-*len=l;
+unsigned int ll = 0;
+unsigned int styp = reqseltype;
+*value = curselwdg->ProvideSelection(styp, ll);
+*len=ll;
 *typ = XA_STRING;
 *format = 8;
@@ -529,6 +529,4 @@
                                  XtPointer value, unsigned long* len, int* format )
 {
-printf("forXt_SelectionValue()/Debug: %lx %lx - %lx - %d (%d %d %d)\n", (unsigned long)w,
-       (unsigned long)usd, (unsigned long)value, (*len), curseltype, reqseltype, provseltype);
 if ( (value != NULL) && (*len > 0) ) 
   ((PIWdgX*)usd)->PasteSelection(provseltype, (void*)value, (*len)) ;
@@ -544,5 +542,7 @@
 if (XtOwnSelection(XtWdg(), XA_PRIMARY, PIXGetLastEventTime(), forXt_ConvertSelection, 
                    forXt_LoseSelection, forXt_DoneSelection) ) {
+#ifdef DEBUG_PIWdgX
   printf("PIWdgX::ClaimSelection(%d) - OK  (Wdg= %lx)\n", typ, (unsigned long)this);
+#endif
   curselwdg = this;
   curseltype = (typ != 0) ? typ : PICP_string;
@@ -550,5 +550,7 @@
 }
 else {
+#ifdef DEBUG_PIWdgX
   printf("PIWdgX::ClaimSelection() - Probleme (Wdg= %lx)\n", (unsigned long)this);
+#endif
   curselwdg = NULL;
   curseltype = PICP_string;
@@ -561,6 +563,5 @@
 // Appele quand le PIWdg perd la possession du buffer copier/coller
 {
-  printf("PIWdgX::SelectionLost()  Ne fait rien !(Wdg= %lx - %lx) \n", 
-        (unsigned long)this, (unsigned long)curselwdg);
+return;
 }
 
@@ -569,6 +570,8 @@
 {
 // Pour demander le contenu du buffer de copier/coller
+#ifdef DEBUG_PIWdgX
 printf("PIWdgX::RequestSelection(%d) (Wdg= %lx - %lx) \n", typ,  
         (unsigned long)this, (unsigned long)curselwdg);
+#endif
 reqseltype = (typ != 0) ? typ : PICP_string;
 XtGetSelectionValue(XtWdg(), XA_PRIMARY, XA_STRING, forXt_SelectionValue, 
@@ -585,5 +588,5 @@
 // Renvoie le pointeur de cette zone, sa taille et son typ
 {
-rs = new char[80];
+rs = new char[128];
 sprintf(rs, "Test-of-PIWdgX::ProvideSelection(%d)- %lx", typ,(long)rs);
 len = strlen(rs);
@@ -594,5 +597,4 @@
 void PIWdgX::SelectionTransferEnd()
 {
-printf("PIWdgX::SelectionTransferEnd() %lx \n", (long)rs);
 delete[] rs;
 }
@@ -605,4 +607,5 @@
 // Le typ de donnees fourni ainsi que les donnees et leur taille 
 // sont en argument 
+#ifdef DEBUG_PIWdgX
 char* mbuff = new char[l+1];
 strncpy(mbuff, (char *)buff, l);
@@ -610,4 +613,5 @@
 printf("PIWdgX::PasteSelection(%d, %lx, %d) [%s] \n", typ, (long)buff, l, mbuff);
 delete[] mbuff;
-return;
-}
+#endif
+return;
+}
