1/* XDesktopWindow.m 2 * 3 * Copyright (C) 2005 Free Software Foundation, Inc. 4 * 5 * Author: Enrico Sersale <enrico@imago.ro> 6 * Date: January 2005 7 * 8 * This file is part of the GNUstep GWorkspace application 9 * 10 * This program is free software; you can redistribute it and/or modify 11 * it under the terms of the GNU General Public License as published by 12 * the Free Software Foundation; either version 2 of the License, or 13 * (at your option) any later version. 14 * 15 * This program is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU General Public License for more details. 19 * 20 * You should have received a copy of the GNU General Public License 21 * along with this program; if not, write to the Free Software 22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA. 23 */ 24 25#include <Foundation/Foundation.h> 26#include <AppKit/AppKit.h> 27#include <GNUstepGUI/GSDisplayServer.h> 28#include <X11/Xlib.h> 29#include <X11/Xatom.h> 30#include "XDesktopWindow.h" 31 32@implementation XDesktopWindow 33 34- (void)dealloc 35{ 36 [super dealloc]; 37} 38 39- (id)init 40{ 41 self = [super initWithContentRect: [[NSScreen mainScreen] frame] 42 styleMask: NSBorderlessWindowMask 43 backing: NSBackingStoreBuffered 44 defer: NO]; 45 if (self) { 46 [self setReleasedWhenClosed: NO]; 47 [self setExcludedFromWindowsMenu: YES]; 48 [self setAcceptsMouseMovedEvents: YES]; 49 [self setCanHide: NO]; 50 } 51 52 return self; 53} 54 55- (void)activate 56{ 57 GSDisplayServer *server = GSCurrentServer(); 58 Display *dpy = (Display *)[server serverDevice]; 59 void *winptr = [server windowDevice: [self windowNumber]]; 60 Window win = *(Window *)winptr; 61 Atom atom = 0; 62 long data = 1; 63 64 atom = XInternAtom(dpy, "KWM_WIN_STICKY", False); 65 66 XChangeProperty(dpy, win, atom, atom, 32, 67 PropModeReplace, (unsigned char *)&data, 1); 68 69 atom = XInternAtom(dpy, "WIN_STATE_STICKY", False); 70 71 XChangeProperty(dpy, win, atom, atom, 32, 72 PropModeReplace, (unsigned char *)&data, 1); 73 74 [self orderFront: nil]; 75} 76 77- (void)deactivate 78{ 79 [self orderOut: self]; 80} 81 82- (id)desktopView 83{ 84 return [self contentView]; 85} 86 87- (void)openSelection:(id)sender 88{ 89 [delegate openSelectionInNewViewer: NO]; 90} 91 92- (void)openSelectionAsFolder:(id)sender 93{ 94 [delegate openSelectionAsFolder]; 95} 96 97- (void)openWith:(id)sender 98{ 99 [delegate openSelectionWith]; 100} 101 102- (void)newFolder:(id)sender 103{ 104 [delegate newFolder]; 105} 106 107- (void)newFile:(id)sender 108{ 109 [delegate newFile]; 110} 111 112- (void)duplicateFiles:(id)sender 113{ 114 [delegate duplicateFiles]; 115} 116 117- (void)recycleFiles:(id)sender 118{ 119 [delegate recycleFiles]; 120} 121 122- (void)deleteFiles:(id)sender 123{ 124 [delegate deleteFiles]; 125} 126 127- (void)setShownType:(id)sender 128{ 129 [delegate setShownType: sender]; 130} 131 132- (void)setExtendedShownType:(id)sender 133{ 134 [delegate setExtendedShownType: sender]; 135} 136 137- (void)setIconsSize:(id)sender 138{ 139 [delegate setIconsSize: sender]; 140} 141 142- (void)setIconsPosition:(id)sender 143{ 144 [delegate setIconsPosition: sender]; 145} 146 147- (void)setLabelSize:(id)sender 148{ 149 [delegate setLabelSize: sender]; 150} 151 152- (void)chooseLabelColor:(id)sender 153{ 154 [delegate chooseLabelColor: sender]; 155} 156 157- (void)chooseBackColor:(id)sender 158{ 159 [delegate chooseBackColor: sender]; 160} 161 162- (void)selectAllInViewer:(id)sender 163{ 164 [delegate selectAllInViewer]; 165} 166 167- (void)showAnnotationWindows:(id)sender 168{ 169 [delegate showAnnotationWindows]; 170} 171 172- (void)showTerminal:(id)sender 173{ 174 [delegate showTerminal]; 175} 176 177- (void)keyDown:(NSEvent *)theEvent 178{ 179 [super keyDown: theEvent]; 180} 181 182- (void)setDelegate:(id)adelegate 183{ 184 delegate = adelegate; 185 [super setDelegate: adelegate]; 186} 187 188- (BOOL)validateMenuItem:(id <NSMenuItem>)menuItem 189{ 190 return [delegate validateItem: menuItem]; 191} 192 193- (void)print:(id)sender 194{ 195 [super print: sender]; 196} 197 198- (void)orderWindow:(NSWindowOrderingMode)place 199 relativeTo:(NSInteger)otherWin 200{ 201 [super orderWindow: place relativeTo: otherWin]; 202 [self setLevel: NSDesktopWindowLevel]; 203} 204 205- (BOOL)canBecomeKeyWindow 206{ 207 return YES; 208} 209 210- (BOOL)canBecomeMainWindow 211{ 212 return YES; 213} 214 215@end 216