SOURCES: icewm-tray_hotfixes.patch (NEW) - -tray_hotfixes.patch fr...
twittner
twittner at pld-linux.org
Wed Oct 31 21:45:59 CET 2007
Author: twittner Date: Wed Oct 31 20:45:59 2007 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- -tray_hotfixes.patch from Debian - some program icons don't appear
on tray at all
- rel. 2
---- Files affected:
SOURCES:
icewm-tray_hotfixes.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/icewm-tray_hotfixes.patch
diff -u /dev/null SOURCES/icewm-tray_hotfixes.patch:1.1
--- /dev/null Wed Oct 31 21:45:59 2007
+++ SOURCES/icewm-tray_hotfixes.patch Wed Oct 31 21:45:54 2007
@@ -0,0 +1,256 @@
+diff -urNad icewm-1.2.32~/src/yxtray.cc icewm-1.2.32/src/yxtray.cc
+--- icewm-1.2.32~/src/yxtray.cc 2007-08-07 07:12:03.000000000 +0200
++++ icewm-1.2.32/src/yxtray.cc 2007-09-11 19:52:02.000000000 +0200
+@@ -88,65 +88,13 @@
+ }
+ }
+
+-YXTrayEmbedder::YXTrayEmbedder(YXTray *tray, Window win): YXEmbed(tray) {
+- fTray = tray;
+- setStyle(wsManager);
+- fDocked = new YXEmbedClient(this, this, win);
+-
+- XSetWindowBorderWidth(xapp->display(),
+- client_handle(),
+- 0);
+-
+- XAddToSaveSet(xapp->display(), client_handle());
+-
+- client()->reparent(this, 0, 0);
+-
+- fDocked->show();
+-}
+-
+-YXTrayEmbedder::~YXTrayEmbedder() {
+- fDocked->hide();
+- fDocked->reparent(desktop, 0, 0);
+- delete fDocked;
+- fDocked = 0;
+-}
+-
+-void YXTrayEmbedder::detach() {
+- XAddToSaveSet(xapp->display(), fDocked->handle());
+-
+- fDocked->reparent(desktop, 0, 0);
+- fDocked->hide();
+- XRemoveFromSaveSet(xapp->display(), fDocked->handle());
+-}
+-
+-void YXTrayEmbedder::destroyedClient(Window win) {
+- fTray->destroyedClient(win);
+-}
+-
+-void YXTrayEmbedder::paint(Graphics &g, const YRect &/*r*/) {
+-#ifdef CONFIG_TASKBAR
+- if (taskBarBg)
+- g.setColor(taskBarBg);
+-#endif
+- g.fillRect(0, 0, width(), height());
+-}
+-
+-void YXTrayEmbedder::configure(const YRect &r, const bool resized) {
+- YXEmbed::configure(r, resized);
+- fDocked->setGeometry(r);
+-}
+-
+-void YXTrayEmbedder::handleConfigureRequest(const XConfigureRequestEvent &configureRequest)
+-{
+- fTray->handleConfigureRequest(configureRequest);
+-}
+-
+ YXTray::YXTray(YXTrayNotifier *notifier,
+ bool internal,
+ const char *atom,
+ YWindow *aParent):
+- YWindow(aParent)
++ YXEmbed(aParent)
+ {
++ setStyle(wsManager);
+ #ifndef LITE
+ if (taskBarBg == 0) {
+ taskBarBg = new YColor(clrDefaultTaskBar);
+@@ -164,7 +112,10 @@
+
+ YXTray::~YXTray() {
+ for (unsigned int i = 0; i < fDocked.getCount(); i++) {
+- delete fDocked[i];
++ YXEmbedClient *ec = fDocked[i];
++
++ ec->hide();
++ ec->reparent(desktop, 0, 0);
+ }
+ delete fTrayProxy; fTrayProxy = 0;
+ }
+@@ -173,13 +124,17 @@
+ MSG(("trayRequestDock"));
+
+ destroyedClient(win);
+- YXTrayEmbedder *embed= new YXTrayEmbedder(this, win);
++ YXEmbedClient *client = new YXEmbedClient(this, this, win);
+
+- MSG(("size %d %d", embed->client()->width(), embed->client()->height()));
++ MSG(("size %d %d", client->width(), client->height()));
++
++ XSetWindowBorderWidth(xapp->display(),
++ client->handle(),
++ 0);
+
+ if (!fInternal) {
+- int ww = embed->client()->width();
+- int hh = embed->client()->height();
++ int ww = client->width();
++ int hh = client->height();
+
+ // !!! hack, hack
+ if (ww < 16 || ww > 8 * TICON_W_MAX)
+@@ -187,21 +142,24 @@
+ if (hh < 16 || hh > TICON_H_MAX)
+ hh = TICON_H_MAX;
+
+- embed->setSize(ww, hh);
++ client->setSize(ww, hh);
+ }
+
++ XAddToSaveSet(xapp->display(), client->handle());
++
++ client->reparent(this, 0, 0);
+ // client->show();
+
+- fDocked.append(embed);
++ fDocked.append(client);
+ relayout();
+ }
+
+ void YXTray::destroyedClient(Window win) {
+ /// MSG(("undock %d", fDocked.getCount()));
+ for (unsigned int i = 0; i < fDocked.getCount(); i++) {
+- YXTrayEmbedder *ec = fDocked[i];
++ YXEmbedClient *ec = fDocked[i];
+ /// msg("win %lX %lX", ec->handle(), win);
+- if (ec->client_handle() == win) {
++ if (ec->handle() == win) {
+ /// msg("removing %d %lX", i, win);
+ fDocked.remove(i);
+ break;
+@@ -215,8 +173,8 @@
+ MSG(("tray configureRequest w=%d h=%d", configureRequest.width, configureRequest.height));
+ bool changed = false;
+ for (unsigned int i = 0; i < fDocked.getCount(); i++) {
+- YXTrayEmbedder *ec = fDocked[i];
+- if (ec->client_handle() == configureRequest.window) {
++ YXEmbedClient *ec = fDocked[i];
++ if (ec->handle() == configureRequest.window) {
+ int w = configureRequest.width;
+ int h = configureRequest.height;
+ if (h != TICON_H_MAX) {
+@@ -234,10 +192,14 @@
+
+ void YXTray::detachTray() {
+ for (unsigned int i = 0; i < fDocked.getCount(); i++) {
+- YXTrayEmbedder *ec = fDocked[i];
+- ec->detach();
++ YXEmbedClient *ec = fDocked[i];
+
+- }
++ XAddToSaveSet(xapp->display(), ec->handle());
++
++ ec->reparent(desktop, 0, 0);
++ ec->hide();
++ XRemoveFromSaveSet(xapp->display(), ec->handle());
++ }
+ fDocked.clear();
+ }
+
+@@ -255,7 +217,7 @@
+ }
+
+ void YXTray::configure(const YRect &r, const bool resized) {
+- YWindow::configure(r, resized);
++ YXEmbed::configure(r, resized);
+ if (resized)
+ relayout();
+ }
+@@ -266,10 +228,9 @@
+ XSetWindowBackground(xapp->display(),handle(), taskBarBg->pixel());
+ #endif
+ for (unsigned int i = 0; i < fDocked.getCount(); i++) {
+- YXTrayEmbedder *ec = fDocked[i];
++ YXEmbedClient *ec = fDocked[i];
+ #ifdef CONFIG_TASKBAR
+ XSetWindowBackground(xapp->display(), ec->handle(), taskBarBg->pixel());
+- XSetWindowBackground(xapp->display(), ec->client_handle(), taskBarBg->pixel());
+ #endif
+ ec->repaint();
+ }
+@@ -284,7 +245,7 @@
+ aw+=1;
+
+ for (unsigned int i = 0; i < fDocked.getCount(); i++) {
+- YXTrayEmbedder *ec = fDocked[i];
++ YXEmbedClient *ec = fDocked[i];
+ int eh(h), ew=ec->width(), ay(0);
+ if (!fInternal) {
+ ew=min(TICON_W_MAX,ec->width());
+@@ -315,7 +276,7 @@
+ fNotifier->trayChanged();
+ }
+ for (unsigned int i = 0; i < fDocked.getCount(); i++) {
+- YXTrayEmbedder *ec = fDocked[i];
++ YXEmbedClient *ec = fDocked[i];
+ ec->show();
+ }
+
+diff -urNad icewm-1.2.32~/src/yxtray.h icewm-1.2.32/src/yxtray.h
+--- icewm-1.2.32~/src/yxtray.h 2007-08-07 07:12:03.000000000 +0200
++++ icewm-1.2.32/src/yxtray.h 2007-09-11 19:51:51.000000000 +0200
+@@ -8,7 +8,6 @@
+ #define SYSTEM_TRAY_CANCEL_MESSAGE 2
+
+ class YXTrayProxy;
+-class YXTray;
+
+ class YXTrayNotifier {
+ public:
+@@ -17,24 +16,7 @@
+ virtual ~YXTrayNotifier() {};
+ };
+
+-class YXTrayEmbedder: public YXEmbed {
+-public:
+- YXTrayEmbedder(YXTray *tray, Window win);
+- ~YXTrayEmbedder();
+- virtual void paint(Graphics &g, const YRect &r);
+- virtual void handleConfigureRequest(const XConfigureRequestEvent &configureRequest);
+- virtual void destroyedClient(Window win);
+- void detach();
+- virtual void configure(const YRect &r, const bool resized);
+-
+- Window client_handle() { return fDocked->handle(); }
+- YXEmbedClient *client() { return fDocked; }
+-private:
+- YXTray *fTray;
+- YXEmbedClient *fDocked;
+-};
+-
+-class YXTray: public YWindow {
++class YXTray: public YXEmbed {
+ public:
+ YXTray(YXTrayNotifier *notifier, bool internal, const char *atom, YWindow *aParent = 0);
+ virtual ~YXTray();
+@@ -47,14 +29,13 @@
+ void relayout();
+
+ void trayRequestDock(Window win);
++ virtual void destroyedClient(Window win);
+ void detachTray();
+
+ bool kdeRequestDock(Window win);
+-
+- void destroyedClient(Window win);
+ private:
+ YXTrayProxy *fTrayProxy;
+- YObjectArray<YXTrayEmbedder> fDocked;
++ YObjectArray<YXEmbedClient> fDocked;
+ YXTrayNotifier *fNotifier;
+ bool fInternal;
+ };
================================================================
More information about the pld-cvs-commit
mailing list