GNOME_VER=2
- GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 libgnomeui-2.0`
- GNOME2_LIBS=`pkg-config --libs gnome-desktop-2.0 libgnomeui-2.0`
-+ GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 gnome-vfs-2.0 libgnomeui-2.0 fontconfig`
++ GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 gnome-vfs-2.0 libgnomeui-2.0 fontconfig`
+ GNOME2_LIBS=`pkg-config --libs gnome-desktop-2.0 gnome-vfs-2.0 libgnomeui-2.0 fontconfig`
+
GNOME_VER=2
- GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 libgnomeui-2.0`
- GNOME2_LIBS=`pkg-config --libs gnome-desktop-2.0 libgnomeui-2.0`
-+ GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 gnome-vfs-2.0 libgnomeui-2.0 fontconfig`
++ GNOME2_CFLAGS=`pkg-config --cflags gnome-desktop-2.0 gnome-vfs-2.0 libgnomeui-2.0 fontconfig`
+ GNOME2_LIBS=`pkg-config --libs gnome-desktop-2.0 gnome-vfs-2.0 libgnomeui-2.0 fontconfig`
AC_DEFINE(CONFIG_GNOME_MENUS, 1, [Define to make IceWM more GNOME-friendly])
/* workspaces */
#define XA_WIN_WORKSPACES "_WIN_WORKSPACES"
-Index: icewm-1.3.7/src/yfont.cc
-===================================================================
---- icewm-1.3.7.orig/src/yfont.cc 2010-10-31 15:09:36.000000000 +0100
-+++ icewm-1.3.7/src/yfont.cc 2011-03-14 15:58:59.000000000 +0100
-@@ -12,7 +12,7 @@
-
- extern ref<YFont> getXftFont(ustring name, bool antialias);
- extern ref<YFont> getXftFontXlfd(ustring name, bool antialias);
--extern ref<YFont> getCoreFont(ustring name);
-+extern ref<YFont> getCoreFont(const char*);
-
- #ifdef CONFIG_XFREETYPE
- ref<YFont> YFont::getFont(ustring name, ustring xftFont, bool antialias) {
-@@ -46,7 +46,9 @@
- #endif
-
- #ifdef CONFIG_COREFONTS
-- return getCoreFont(name);
-+ char tmp[4096]; // XXX: such things should go into getCoreFont directly
-+ name.copy(tmp, sizeof(tmp));
-+ return getCoreFont(tmp);
- #else
- return null;
- #endif
Index: icewm-1.3.7/src/yapp.cc
===================================================================
--- icewm-1.3.7.orig/src/yapp.cc 2010-10-31 15:09:36.000000000 +0100
CORE_LIBS = @CORE_LIBS@ # `fc-config --libs`
IMAGE_LIBS = @IMAGE_LIBS@
+--- icewm-1.3.8/src/icesh.cc.orig 2013-11-17 17:54:39.000000000 +0100
++++ icewm-1.3.8/src/icesh.cc 2020-11-10 22:44:42.344406358 +0100
+@@ -245,7 +245,7 @@
+ };
+
+ SymbolTable layers = {
+- layerIdentifiers, 0, WinLayerCount - 1, WinLayerInvalid
++ layerIdentifiers, 0, WinLayerCount - 1, (long)WinLayerInvalid
+ };
+
+ SymbolTable states = {
+@@ -257,7 +257,7 @@
+ };
+
+ SymbolTable trayOptions = {
+- trayOptionIdentifiers, 0, WinTrayOptionCount - 1, WinTrayInvalid
++ trayOptionIdentifiers, 0, WinTrayOptionCount - 1, (long)WinTrayInvalid
+ };
+
+ /******************************************************************************/
+++ /dev/null
---- a/src/wmcontainer.cc 2010-08-06 18:23:51.000000000 +0400
-+++ b/src/wmcontainer.cc 2010-08-06 18:23:22.000000000 +0400
-@@ -183,10 +183,12 @@
-
- void YClientContainer::handleMapRequest(const XMapRequestEvent &mapRequest) {
- if (mapRequest.window == getFrame()->client()->handle()) {
-+ manager->lockFocus();
- getFrame()->setState(WinStateMinimized |
- WinStateHidden |
- WinStateRollup,
- 0);
-+ manager->unlockFocus();
- bool doActivate = true;
- getFrame()->updateFocusOnMap(doActivate);
- if (doActivate) {
+++ /dev/null
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## imap_unseen.dpatch by Alexander Galanin <al@galanin.nnov.ru>
-##
-## DP: Debian Bug report logs - #539956
-## DP: [icewm] support for unseen messages on IMAP
-## DP: with minor changes by Eduard Bloch <blade@debian.org>
-
-@DPATCH@
-Index: icewm-1.3.7~pre2/src/amailbox.cc
-===================================================================
---- icewm-1.3.7~pre2.orig/src/amailbox.cc 2010-04-28 21:00:30.000000000 +0200
-+++ icewm-1.3.7~pre2/src/amailbox.cc 2010-04-29 22:11:16.950092518 +0200
-@@ -278,14 +278,27 @@
- state = WAIT_STAT;
- delete[] status;
- } else if (state == WAIT_STAT) {
-- MSG(("imap: logout"));
-- char logout[] = "0002 LOGOUT\r\n", folder[128];
-+ MSG(("imap: unseen"));
-+ char * unseen(cstrJoin("0002 STATUS ",
-+ (fURL->path() == null || fURL->path().equals("/")) ? "INBOX" : cstring(fURL->path()).c_str() + 1,
-+ " (UNSEEN)\r\n", NULL));
-+ char folder[128] = "";
- if (sscanf(bf, "* STATUS %127s (MESSAGES %lu)",
- folder, &fCurCount) != 2) {
- fCurCount = 0;
- }
- fCurUnseen = 0;
-- sk.write(logout, strlen(logout));
-+ sk.write(unseen, strlen(unseen));
-+ state = WAIT_UNSEEN;
-+ delete [] unseen;
-+ } else if (state == WAIT_UNSEEN) {
-+ MSG(("imap: logout"));
-+ const char logout[] = "0003 LOGOUT\r\n", folder[128] = "";
-+ if (sscanf(bf, "* STATUS %127s (UNSEEN %lu)",
-+ folder, &fCurUnseen) != 2) {
-+ fCurUnseen = 0;
-+ }
-+ sk.write(logout, sizeof(logout)/sizeof(char)-1);
- state = WAIT_QUIT;
- } else if (state == WAIT_QUIT) {
- MSG(("imap: done"));
-@@ -294,10 +307,11 @@
- state = SUCCESS;
- if (fCurCount == 0)
- fMbx->mailChecked(MailBoxStatus::mbxNoMail, fCurCount);
-- else if (fCurCount > fLastCount && fLastCount != -1)
-- fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fCurCount);
-+ // A.Galanin: I think that 'has unseen' flag has priority higher that 'has new' flag
- else if (fCurUnseen != 0)
- fMbx->mailChecked(MailBoxStatus::mbxHasUnreadMail, fCurCount);
-+ else if (fCurCount > fLastCount && fLastCount != -1)
-+ fMbx->mailChecked(MailBoxStatus::mbxHasNewMail, fCurCount);
- else
- fMbx->mailChecked(MailBoxStatus::mbxHasMail, fCurCount);
- fLastUnseen = fCurUnseen;
-Index: icewm-1.3.7~pre2/src/amailbox.h
-===================================================================
---- icewm-1.3.7~pre2.orig/src/amailbox.h 2010-04-28 21:00:30.000000000 +0200
-+++ icewm-1.3.7~pre2/src/amailbox.h 2010-04-29 22:11:16.950092518 +0200
-@@ -25,6 +25,7 @@
- WAIT_USER,
- WAIT_PASS,
- WAIT_STAT,
-+ WAIT_UNSEEN,
- WAIT_QUIT,
- ERROR,
- SUCCESS
+++ /dev/null
-#! /bin/sh /usr/share/dpatch/dpatch-run
-## tray_hotfixes.dpatch, reverting a weird CVS change creating races
-##
-
-@DPATCH@
-Index: icewm-1.3.7~pre2/src/icetray.cc
-===================================================================
---- icewm-1.3.7~pre2.orig/src/icetray.cc 2010-04-28 21:00:30.000000000 +0200
-+++ icewm-1.3.7~pre2/src/icetray.cc 2010-04-29 22:11:16.938048246 +0200
-@@ -36,14 +36,10 @@
- bool checkMessageEvent(const XClientMessageEvent &message);
- void requestDock();
-
-- void handleUnmap(const XUnmapEvent &ev) {
-- YWindow::handleUnmap(ev);
-- MSG(("hide1"));
--// if (visible() && ev.window == handle()) {
-- MSG(("hide2"));
-+ void handleUnmap(const XUnmapEvent &) {
-+ MSG(("hide"));
-+ if (visible())
- hide();
-- fManaged = false;
--// }
- }
-
- void trayChanged();
-@@ -51,7 +47,6 @@
- Atom icewm_internal_tray;
- Atom _NET_SYSTEM_TRAY_OPCODE;
- YXTray *fTray2;
-- bool fManaged;
- };
-
- class SysTrayApp: public YXApplication {
-@@ -187,7 +182,6 @@
- setSize(fTray2->width(),
- fTray2->height());
- fTray2->show();
-- fManaged = false;
- requestDock();
- }
-
-@@ -195,15 +189,10 @@
- fTray2->backgroundChanged();
- setSize(fTray2->width(),
- fTray2->height());
-- if (fTray2->visible()) {
-- if (!fManaged)
-- requestDock();
-- else
-- show();
-- } else {
-- fManaged = false;
-+ if (fTray2->visible())
-+ show();
-+ else
- hide();
-- }
- }
-
- void SysTray::requestDock() {
-@@ -223,19 +212,12 @@
-
- XSendEvent(xapp->display(), w, False, StructureNotifyMask, (XEvent *) &xev);
- }
-- fManaged = true;
- }
-
- bool SysTray::checkMessageEvent(const XClientMessageEvent &message) {
- if (message.message_type == icewm_internal_tray) {
-- MSG(("requestDock %lX", (long)handle()));
-- setSize(fTray2->width(),
-- fTray2->height());
-- MSG(("requestDock2 %d %d", width(), height()));
-- if (fTray2->visible())
-- requestDock();
-- else
-- fManaged = false;
-+ MSG(("requestDock"));
-+ requestDock();
- }
- return true;
- }
#
# Conditional build:
-%bcond_without gradients # disable gradients (requires antialiasing which requires freetype)
-%bcond_without freetype # disable xfreetype support (implies !with_antialiasing)
-%bcond_without guievents # disable guievents
-%bcond_with gnome2 # build with support for GNOME2 wm-properties
+%bcond_without gradients # gradients (requires antialiasing which requires freetype)
+%bcond_without freetype # xfreetype support (implies no antialiasing)
+%bcond_with guievents # GUI events (broken in 1.3.8)
+%bcond_with gnome2 # support for GNOME2 wm-properties
#
# TODO:
# - make a PLD-theme - default :]
Summary(ru.UTF-8): Оконный менеджер для X11
Summary(uk.UTF-8): Віконний менеджер для X11
Name: icewm
-Version: 1.3.7
-%define _iceicons_ver 0.6
-%define _netscapeicons_ver 0.2
-Release: 4
+Version: 1.3.8
+%define iceicons_ver 0.6
+%define netscapeicons_ver 0.2
+Release: 1
Epoch: 2
-License: LGPL
+License: LGPL v2
Group: X11/Window Managers
-Source0: http://dl.sourceforge.net/icewm/%{name}-%{version}.tar.gz
-# Source0-md5: 224695231aedb2b91db3254a13e1c8dd
+Source0: http://downloads.sourceforge.net/icewm/%{name}-%{version}.tar.gz
+# Source0-md5: 6d61aced3bd20b9e7caeb7e8380368c8
Source1: IceWM.desktop
-Source3: http://dl.sourceforge.net/icewm/iceicons-%{_iceicons_ver}.tar.gz
+Source3: http://downloads.sourceforge.net/icewm/iceicons-%{iceicons_ver}.tar.gz
# Source3-md5: 53ed111a3c4d1e609bd1604ddccd4701
Source4: icewm-startup.sh
-Source6: http://dl.sourceforge.net/icewm/netscapeicons-%{_netscapeicons_ver}.tar.gz
+Source6: http://downloads.sourceforge.net/icewm/netscapeicons-%{netscapeicons_ver}.tar.gz
# Source6-md5: 409aa9b02adc11309ed546c5120c01d2
Source7: %{name}-xsession.desktop
Patch0: %{name}-build-fixes.patch
-Patch1: %{name}-tray_hotfixes.patch
-Patch2: %{name}-fix_input_focus_loss_for_deiconified_frame_1.patch
Patch3: %{name}-ifstate-exact-check.patch
-Patch4: %{name}-imap-unseen.patch
Patch5: %{name}-autohide.patch
-URL: http://www.icewm.org/
+URL: https://ice-wm.org/
BuildRequires: autoconf >= 2.50
BuildRequires: automake
-BuildRequires: gdk-pixbuf-devel
+BuildRequires: gdk-pixbuf2-xlib-devel >= 2.0
BuildRequires: gettext-tools
-BuildRequires: gtk+2-devel
-BuildRequires: kde4-kde3support
BuildRequires: libstdc++-devel
BuildRequires: pkgconfig
BuildRequires: xorg-lib-libICE-devel
BuildRequires: xorg-lib-libSM-devel
BuildRequires: xorg-lib-libX11-devel
+BuildRequires: xorg-lib-libXext-devel
%{?with_freetype:BuildRequires: xorg-lib-libXft-devel >= 2.1}
BuildRequires: xorg-lib-libXinerama-devel
+BuildRequires: xorg-lib-libXrandr-devel
+BuildRequires: xorg-lib-libXrender-devel
%{?with_guievents:BuildRequires: yiff-devel}
-Requires(pre): fileutils
-Requires(pre): sh-utils
+Requires(pre): /bin/rm
+Requires(pre): /usr/bin/test
Requires: shared-mime-info
Requires: xinitrc-ng
Suggests: vfmg >= 0.9.95
%prep
%setup -q
%patch0 -p1
-%patch1 -p1
-%patch2 -p1
%patch3 -p1
-%patch4 -p1
%patch5 -p1
+# remove GNOME1/GNOME2 menu rules
+%{__sed} -i -e '/icewm-menu-gnome/d' lib/menu.in
+
cd lib/icons
tar -xzf %{SOURCE3}
tar -xzf %{SOURCE6}
%{__autoheader}
%configure \
%{!?with_gradients:--disable-gradients} \
- %{!?with_freetype:--disable-xfreetype --enable-corefonts} \
- %{?with_guievents:--enable-guievents} \
+ %{?with_guievents:--enable-guievents --with-icesound=OSS,Y} \
--enable-shaped-decorations \
+ %{!?with_freetype:--disable-xfreetype --enable-corefonts} \
--with-cfgdir=%{_sysconfdir}/X11/%{name} \
--with-docdir=%{_docdir}
%{__make}
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
-%{?with_gnome2:install %{SOURCE1} $RPM_BUILD_ROOT%{_wmpropsdir}}
-install %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/icewm/startup
-install %{SOURCE7} $RPM_BUILD_ROOT%{_datadir}/xsessions/%{name}.desktop
-install lib/keys $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/keys
+%{?with_gnome2:cp -p %{SOURCE1} $RPM_BUILD_ROOT%{_wmpropsdir}}
+cp -p %{SOURCE4} $RPM_BUILD_ROOT%{_datadir}/icewm/startup
+cp -p %{SOURCE7} $RPM_BUILD_ROOT%{_datadir}/xsessions/%{name}.desktop
+cp -p lib/keys $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/keys
sed 's|^# IconPath=""|IconPath="%{_datadir}/pixmaps:%{_datadir}/icons"|' < lib/preferences > $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/preferences
-install lib/toolbar $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/toolbar
-install lib/winoptions $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/winoptions
+cp -p lib/toolbar $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/toolbar
+cp -p lib/winoptions $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/winoptions
echo %{_bindir}/icewmbg > $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/startup
:> $RPM_BUILD_ROOT%{_sysconfdir}/X11/%{name}/restart
%files -f %{name}.lang
%defattr(644,root,root,755)
-%doc AUTHORS BUGS CHANGES PLATFORMS README* TODO icewm.lsm doc/*.html
-%attr(755,root,root) %{_bindir}/*
+%doc AUTHORS BUGS CHANGES PLATFORMS README* TODO doc/*.html
+%attr(755,root,root) %{_bindir}/icehelp
+%attr(755,root,root) %{_bindir}/icesh
+%if %{with guievents}
+%attr(755,root,root) %{_bindir}/icesound
+%endif
+%attr(755,root,root) %{_bindir}/icewm
+%attr(755,root,root) %{_bindir}/icewm-session
+%attr(755,root,root) %{_bindir}/icewm-set-gnomewm
+%attr(755,root,root) %{_bindir}/icewmbg
+%attr(755,root,root) %{_bindir}/icewmhint
+%attr(755,root,root) %{_bindir}/icewmtray
%dir %{_sysconfdir}/X11/%{name}
-%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/X11/%{name}/[!rs]*
-%config(noreplace,missingok) %verify(not md5 mtime size) %attr(755,root,root) %{_sysconfdir}/X11/%{name}/[rs]*
+%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/X11/%{name}/keys
+%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/X11/%{name}/menu
+%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/X11/%{name}/preferences
+%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/X11/%{name}/toolbar
+%config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/X11/%{name}/winoptions
+%config(noreplace,missingok) %verify(not md5 mtime size) %attr(755,root,root) %{_sysconfdir}/X11/%{name}/restart
+%config(noreplace,missingok) %verify(not md5 mtime size) %attr(755,root,root) %{_sysconfdir}/X11/%{name}/startup
%{_pixmapsdir}/icewm
%dir %{_datadir}/icewm
%{_datadir}/icewm/icons
+%{_datadir}/icewm/keys
+%{_datadir}/icewm/menu
%{_datadir}/icewm/ledclock
%{_datadir}/icewm/mailbox
+%{_datadir}/icewm/preferences
%attr(755,root,root) %{_datadir}/icewm/startup
+%{_datadir}/icewm/toolbar
%{_datadir}/icewm/taskbar
+%{_datadir}/icewm/winoptions
%dir %{_datadir}/icewm/themes
%{_datadir}/icewm/themes/Infadel2
%{_datadir}/icewm/themes/icedesert
-%{_datadir}/xsessions/%{name}.desktop
-%{?with_gnome2:%{_wmpropsdir}/*}
+%{_datadir}/xsessions/icewm.desktop
+%{?with_gnome2:%{_wmpropsdir}/IceWM.desktop}
%files themes-base
%defattr(644,root,root,755)