ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/alpha-snapshots/gnustep-xdps-960621.tgz#/gnustep-xdps-960621/Source/PXKButton.m

This is PXKButton.m in view mode; [Download] [Up]

/* 
   PXKButton.m

   NSButton for GNUstep GUI X/DPS Backend

   Copyright (C) 1996 Free Software Foundation, Inc.

   Author:  Pascal Forget <pascal@wsc.com>
   Date: October 1995
   
   This file is part of the GNUstep GUI X/DPS Backend.

   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.

   If you are interested in a warranty or support for this source code,
   contact Scott Christley <scottc@net-community.com> for more information.
   
   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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ 

#include <gnustep/xdps/PXKButton.h>
#include <gnustep/xdps/PXKApplication.h>

@implementation PXKButton

#if 0
- mouseDown:(XEvent *)e;
{
//    fprintf(stdout, "mouse down\n");    
//    if (type == PXK_TOGGLE_MODE) {
    if (NO) {
//	fprintf(stdout, "PXKButton mouseDown: (toggle mode)\n");
	[self toggleState];
	[self sendAction];
    } else {
//	fprintf(stdout, "PXKButton mouseDown: (!toggle mode)\n");	
	state = 1;
    }

    [self display];
    return self;
}

- mouseDragged:(XEvent *)e;
{
    XEvent event = *e;
    PXKPoint location;
    Window root, child;
    int root_x, root_y, pos_x, pos_y;
    unsigned int keys_buttons;
    
    location.x = event.xmotion.x;
    location.y = event.xmotion.y;

    while (1) {

	XNextEvent(pxkDisplay, &event);
	
	if (event.type == MotionNotify) {
#if 0
	    puts("Button: got a mouse drag event.");
	    
	    location.x = event.xmotion.x;
	    location.y = event.xmotion.y;

	    if (!XQueryPointer(pxkDisplay, event.xmotion.window,
			       &root, &child, &root_x, &root_y, &pos_x,
			       &pos_y, &keys_buttons))
		/* pointer is on other screen */
		break;

	    if (child == [superview xWindow]) {
		location.x = pos_x;
		location.y = pos_y;
	    } else {
		location.x = pos_x + frame.origin.x;
		location.y = pos_y + frame.origin.y;
	    }
	    	    
	    printf("x: %i y: %i\n", location.x, location.y);
	    
	    [self moveTo:location.x :location.y];
	    [self display];
#endif	    
	    continue;
	} else if (event.type == ButtonRelease) {
	    [self mouseUp:&event];
	}
	break;
    }

    return self;
}

- mouseUp:(XEvent *)e;
{
//    fprintf(stdout, "mouse up\n");
//    if (type == PXK_MOMENTARY_PUSH_MODE) {
    if (YES) {
	//fprintf(stdout, "PXKButton mouseUp: (momentary push mode)\n");
	state = 0;
	[self display];
	[self sendAction];
    }
    
    return self;
}
#endif

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.