Source Code (Use browser search to find items of interest.)

Class Index

kstart'KStart (./kdebase/kstart/kstart.h:27)

class KStart: public QObject {
  Q_OBJECT

public:
  KStart(const char* command_arg,
	 const char* window_arg,
	 int desktop_arg,
	 bool activate_arg,
	 bool maximize_arg,
	 bool iconify_arg,
	 bool sticky_arg,
	 int decoration_arg);
  ~KStart(){};

public slots:

  void initialized();
  void windowAdd(WId);

private:
    
  void applyStyle(Window);
    
    
  KWinModule* kwinmodule;
  QString command;
  QString window;
  int desktop;
  bool activate;
  bool maximize;
  bool iconify;
  bool sticky;
  int decoration;
};




kstart'KStart::KStart() (./kdebase/kstart/kstart.C:28)

KStart::KStart(const char* command_arg,
	       const char* window_arg,
	       int desktop_arg,
	       bool activate_arg,
	       bool maximize_arg,
	       bool iconify_arg,
	       bool sticky_arg,
	       int decoration_arg
	       )
  :QObject(){
    kwinmodule = new KWinModule;
    command = command_arg;
    window = window_arg;
    desktop = desktop_arg;
    activate = activate_arg;
    maximize = maximize_arg;
    iconify = iconify_arg;
    sticky = sticky_arg;
    decoration = decoration_arg;

    // just connect to the initialized() signal, we want to be
    // informed if we recieved all existing windows
    //connect(kwinmodule, SIGNAL(initialized()), SLOT(initialized()));
    //kwinmodule->connectToKWM();
    initialized();
}


kstart'KStart::initialized() (./kdebase/kstart/kstart.C:55)

void KStart::initialized(){
    // ok, we are initialized. Now connect to window add to get the NEW windows
    connect(kwinmodule, SIGNAL(windowAdd(WId)), SLOT(windowAdd(WId)));
    if (window) {
	KWM::doNotManage(window);
	XSync(qt_xdisplay(), False);
    }
    //finally execute the comand
    execute(command);
}


kstart'KStart::windowAdd() (./kdebase/kstart/kstart.C:66)

void KStart::windowAdd(WId w){
    if (window) {
	QString t = KWM::title(w);
	QRegExp r = window;
	if (r.match(t) != -1){
	    applyStyle( w );
	    ::exit(0);
	}
    }
    else {
	// not window specified, just take the first one
	applyStyle( w );
	::exit(0);
    }
}


kstart'KStart::applyStyle() (./kdebase/kstart/kstart.C:82)

void KStart::applyStyle(Window w) {
    if (window)
	KWM::prepareForSwallowing(w);
    if (desktop > 0) {
	if (KWM::desktop(w) != desktop)
        {
            debug("moving window to desktop %d",desktop);
	    KWM::moveToDesktop(w, desktop);
        }
    }
    if (maximize) {
	debug("do maximize");
	KWM::doMaximize(w, true);
    }
    if (iconify)
	KWM::setIconify(w, true);
    if (sticky) {
	KWM::setSticky(w, true);
    }
    if (decoration != KWM::normalDecoration) {
	KWM::setDecoration(w, decoration);
    }

    XSync(qt_xdisplay(), False);
    if (window) {
	XMapWindow(qt_xdisplay(), w);
	XSync(qt_xdisplay(), False);
    }
    if (activate)
      KWM::activate(w);
    XSync(qt_xdisplay(), False);
}

// David, 05/03/2000