{
hunk ./src/common.cpp 1481
 #endif
 }
 
+XMPP::Status makeStatus(int x, const QString &str, int priority)
+{
+	XMPP::Status s = makeStatus(x,str);
+	s.setPriority(priority);
+	return s;
+}
+
 XMPP::Status makeStatus(int x, const QString &str)
 {
 	XMPP::Status s;
hunk ./src/common.h 108
 
 	int defaultAction;
 	int incomingAs;
-	VarList sp; //status message presets
+
+	VarList sp;
 	QStringList recentStatus; //recent status messages
 
 	int asAway, asXa, asOffline;
hunk ./src/common.h 290
 
 void soundPlay(const QString &);
 
+XMPP::Status makeStatus(int, const QString &, int priority);
 XMPP::Status makeStatus(int, const QString &);
 int makeSTATUS(const XMPP::Status &);
 
hunk ./src/mainwin.cpp 773
 	d->getAction("menu_quit")->addTo(d->trayMenu);
 }
 
-void MainWin::setTrayToolTip(int status)
+void MainWin::setTrayToolTip(int status, bool)
 {
 	if (!d->tray)
 		return;
hunk ./src/mainwin.h 91
 	void buildMainMenu();
 	void buildToolsMenu();
 
-	void setTrayToolTip(int);
+	void setTrayToolTip(int,bool usePriority = false);
 
 	void activatedStatusAction(int);
 
hunk ./src/psiaccount.cpp 1675
 	return d->loginStatus;
 }
 
-void PsiAccount::setStatus(const Status &_s)
+void PsiAccount::setStatus(const Status &_s, bool withPriority)
 {
 	// Block all transports' contacts' status change popups from popping
 	{
hunk ./src/psiaccount.cpp 1692
 	doReconnect = false;
 
 	Status s = _s;
-	s.setPriority(d->acc.priority);
+
+	if (!withPriority)
+		s.setPriority(d->acc.priority);
 
 	d->loginStatus = s;
 
hunk ./src/psiaccount.cpp 1724
 		// change status
 		else {
 			if(rosterDone)
-				setStatusDirect(s);
+				setStatusDirect(s, withPriority);
 
 			if(s.isInvisible()) {//&&Pass invis to transports KEVIN
 				//this is a nasty hack to let the transports know we're invisible, since they get an offline packet when we go invisible
hunk ./src/psiaccount.cpp 1745
 	}
 }
 
-void PsiAccount::setStatusDirect(const Status &_s)
+void PsiAccount::setStatusDirect(const Status &_s, bool withPriority)
 {
 	Status s = _s;
hunk ./src/psiaccount.cpp 1748
-	s.setPriority(d->acc.priority);
+
+	if (!withPriority)
+		s.setPriority(d->acc.priority);
 
 	//printf("setting status to [%s]\n", s.status().latin1());
 
hunk ./src/psiaccount.cpp 2275
 		}
 		else {
 			StatusSetDlg *w = new StatusSetDlg(this, makeStatus(x, ""));
-			connect(w, SIGNAL(set(const Status &)), SLOT(setStatus(const Status &)));
+			connect(w, SIGNAL(set(const Status &, bool)), SLOT(setStatus(const Status &, bool)));
 			w->show();
 		}
 	}
hunk ./src/psiaccount.h 157
 	PsiCon *psi() const;
 	AvatarFactory *avatarFactory() const;
 	Status status() const;
-	void setStatusDirect(const Status &);
+	void setStatusDirect(const Status &, bool withPriority = false);
 	void setStatusActual(const Status &);
 	void login();
 	void logout(bool fast=false, const Status &s = Status("", "Logged out", 0, false));
hunk ./src/psiaccount.h 225
 	void enabledChanged();
 
 public slots:
-	void setStatus(const Status &);
+	void setStatus(const Status &, bool withStatus = false);
 
 	void secondsIdle(int);
 	void openNextEvent();
hunk ./src/psicon.cpp 966
 		else {
 			// Create a dialog with the last status message
 			StatusSetDlg *w = new StatusSetDlg(this, makeStatus(x, d->lastStatusString));
-			connect(w, SIGNAL(set(const Status &)), SLOT(setStatusFromDialog(const Status &)));
+			connect(w, SIGNAL(set(const Status &, bool)), SLOT(setStatusFromDialog(const Status &)));
 			connect(w, SIGNAL(cancelled()), SLOT(updateMainwinStatus()));
 			if(option.useDock == true)
 				connect(w, SIGNAL(set(const Status &)), d->mainwin, SLOT(setTrayToolTip(const Status &)));
hunk ./src/psicon.cpp 981
 	setGlobalStatus(s);
 }
 
-void PsiCon::setGlobalStatus(const Status &s)
+void PsiCon::setGlobalStatus(const Status &s, bool withPriority)
 {
 	// Check whether all accounts are logged off
 	bool allOffline = true;
hunk ./src/psicon.cpp 998
 	PsiAccountListIt it(d->listEnabled);
 	for( ; (pa = it.current()); ++it)
 		if (allOffline || pa->isActive())
-			pa->setStatus(s);
+			pa->setStatus(s, withPriority);
 }
 
 void PsiCon::pa_updatedActivity()
hunk ./src/psicon.h 155
 	void pgpKeysUpdated();
 
 public slots:
-	void setGlobalStatus(const Status &);
+	void setGlobalStatus(const Status &, bool withPriority = false);
 	QWidget *doToolbars();
 
 private slots:
}

