Hello community,
here is the log from the commit of package libwnck-1-22
checked in at Sat Jul 14 18:24:33 CEST 2007.
--------
New Changes file:
--- /dev/null 2006-09-20 18:56:23.000000000 +0200
+++ /mounts/work_src_done/STABLE/libwnck-1-22/libwnck-1-22.changes 2007-07-14 18:23:23.943699000 +0200
@@ -0,0 +1,431 @@
+-------------------------------------------------------------------
+Sat Jul 14 18:22:49 CEST 2007 - mrueckert@suse.de
+
+- use libwnck-devel and libwnck-doc. the file content would conflict
+ anyway so there is no need to have them as versioned subpackages.
+
+-------------------------------------------------------------------
+Mon Jul 9 22:15:11 CEST 2007 - maw@suse.de
+
+- Following up on the package rename, add some new
+ Provides/Obsoletes.
+
+-------------------------------------------------------------------
+Fri Jul 6 17:26:28 CEST 2007 - maw@suse.de
+
+- Update to version 2.19.4, and rename to libwnck-1-22 to match
+ sonames.
+- Remove upstreamed libwnck-216129-tasklist-crash.patch
+
+-------------------------------------------------------------------
+Tue May 29 15:12:16 CEST 2007 - danw@suse.de
+
+- Add libwnck-216129-tasklist-crash.patch from upstream to fix a
+ panel crash. #216129
+
+-------------------------------------------------------------------
+Fri Mar 23 13:48:19 CST 2007 - maw@suse.de
+
+- Update to version 2.18.0
+- Minor changes:
+ * libwnck/tasklist.c: (wnck_tasklist_scroll_cb): fix left/right
+ scroll for RTL
+ * libwnck/pager.c: (wnck_update_drag_icon): improve a bit, so
+ that the icon has a good width/height ratio, and is not always
+ huge
+ * libwnck/pager.c: (wnck_pager_set_n_rows): don't accept to set to
+ less than 1 row. Again. (My one-line patch was broken ;-))
+ * test-tasklist.c: add an option to always group windows, and default
+ to automatic grouping
+ * test-tasklist.c: (main):
+ * test-selector.c: (main): don't use gtk_window_set_policy(), but
+ gtk_window_set_resizable()
+ * libwnck/pager.c: (wnck_pager_set_n_rows): don't accept to set to
+ less than 1 row
+
+-------------------------------------------------------------------
+Mon Feb 19 14:51:59 CST 2007 - maw@suse.de
+
+- Update to version 2.17.91
+
+-------------------------------------------------------------------
+Wed Feb 7 12:27:30 CET 2007 - sbrabec@suse.cz
+
+- Do not build unusable static libraries (#238552).
+
+-------------------------------------------------------------------
+Wed Dec 13 13:27:58 CET 2006 - sbrabec@suse.cz
+
+- Prefix changed to /usr.
+- Spec file cleanup.
+
+-------------------------------------------------------------------
+Tue Nov 7 20:16:53 CET 2006 - dreveman@suse.de
+
+- Fix viewport patch so it doesn't crash when creating action menu
+ for windows that are visible on more than one workspace. #217262
+
+-------------------------------------------------------------------
+Wed Oct 18 19:34:40 CEST 2006 - sbrabec@suse.cz
+
+- Enabled creating of doc package (#193240).
+
+-------------------------------------------------------------------
+Mon Oct 16 20:55:43 CEST 2006 - dreveman@suse.de
+
+- Fix broken border width patch. 178222.
+- Remove ibwnck-2.12.2-virtual-aspect-1.patch, it's no longer
+ needed.
+
+-------------------------------------------------------------------
+Tue Oct 3 18:54:29 CEST 2006 - jhargadon@suse.de
+
+- update to version 2.16.1
+- Fix critical warning and leak
+- Avoid sending spurious icon geometry updates
+- Require GTK+ 2.8.0
+- translation updates
+
+-------------------------------------------------------------------
+Fri Sep 15 00:17:58 CEST 2006 - jhargadon@suse.de
+
+- update to version 2.16.0
+- translation updates
+
+-------------------------------------------------------------------
+Thu Aug 31 23:19:12 CEST 2006 - jhargadon@suse.de
+
+- update to version 2.15.92
+- Fix crash when tasklist is destroyed
+- Update delete icon for the context menu
+- translation updates
+
+-------------------------------------------------------------------
+Tue Aug 15 23:03:35 CEST 2006 - jhargadon@suse.de
+
+- update to version 2.15.91
+- Changed the glowing code to have less and saner style properties
+
+-------------------------------------------------------------------
+Fri Aug 4 22:00:04 CEST 2006 - gekker@suse.de
+
+- Update to version 2.15.90
+- Remove upstreamed patches
+Features
+ - Add move/resize window API (Magnus Therning)
+ - Improve glowing effect in tasklist and make it themeable (Benjamin Berg)
+ [#325176]
+ - Use cairo in the pager (Benjamin Otte) [#339293]
+ - Improve drag and drop in the pager (Nickolay V. Shmyrev, Benjamin Otte)
+ [#96675, #339293]
+ - Improve look of the pager (Benjamin Otte) [#339293]
+ - Add dragging of windows from the tasklist (Nickolay V. Shmyrev) [#96675]
+ - Sort window in a group alphabetically (Xavier Claessens, Vincent)
+ - Change active window when scrolling on the selector (Nigel Tao)
+ - Add scrolling support to the tasklist (Xavier Claessens)
+
+ Fixes
+ - Correctly set relief for group buttons in the tasklist (Benjamin Otte)
+ - Make windows that go to the bottom occupy the last pixel of the pager
+ (Benjamin Otte)
+ - Fix crashes
+ - Don't change workspace when releasing the button on another workspace
+ (Vincent) [#110510]
+ - Fix leaks (Dan Winship) [#334137]
+ - Fix minimization of "always on visible desktop" windows with the tasklist
+ (Vincent) [#335316]
+ - Fix transient cycles causing infinite loops (Dan Winship, Elijah) [#332493]
+ - Immediately show notification for demands-attent/urgent windows on other
+ workspaces in the tasklist (Leszek Matok) [#336142]
+ - Don't minimize the window when it's on another desktop and it was the last
+ active window (Vincent) [#331661]
+ - Fix C89 compliance (Jens Granseuer) [#332866]
+ - Fix window disappearing in workspace switcher after drag and drop (Vincent)
+ [#317373]
+ - Fix corrupted drawing of windows (Vincent) [#155502]
+ - Include demands-attention/urgent windows unconditionally in
+ tasklist; this should help users not miss important windows on
+ other workspaces (Elijah) [#305979]
+ - Synchronize the right-click-menu with that of Metacity's (Srirama
+ Sharma, Leena Gunda, Christian Neumair) [#135710]
+ - Escape window titles used in pango markup, avoids some crashes too
+ (Vincent Noel, jylefort FreeBSD org) [#306289]
+ - Correctly catch and handle demands-attention/urgent state changes
+ for transients of windows in the tasklist (Elijah) [#317541]
+ - Make the pager Fitts's law compliant when shadow type is none
+ (Vincent) [#304248]
+ - Correctly specify the source indication (Elijah)
+ - Use virtual desktop size when computing size of pager (Loic Minier, Vincent)
+Update Translations
+
+-------------------------------------------------------------------
+Tue May 30 16:25:53 CEST 2006 - danw@suse.de
+
+- Patch in a new method from libwnck HEAD to allow compiz to know
+ when a window has a real name (as opposed to a fallback name like
+ "untitled window"). #173059
+
+-------------------------------------------------------------------
+Fri May 12 21:04:25 CEST 2006 - dreveman@suse.de
+
+- Fix so that correct geometry is returned when border width is
+ greater than 0. (bnc 178222)
+
+-------------------------------------------------------------------
+Thu May 4 23:46:55 CEST 2006 - dreveman@suse.de
+
+- Add opacity window action sub-menu patch.
+ (libwnck-opacity-2.patch)
+- Add patch for viewport options in window action menu.
+ (libwnck-2.12.2-viewport-1.patch) (bnc 160004)
+
+-------------------------------------------------------------------
+Thu Apr 27 00:25:05 CEST 2006 - joeshaw@suse.de
+
+- Add a patch to fix some layout and grouping bugs in the tasklist.
+ (bnc #148840)
+
+-------------------------------------------------------------------
+Tue Mar 7 17:58:04 CET 2006 - danw@suse.de
+
+- Fix a crash in libwnck-2.12.2-virtual-aspect-1.patch (144722).
+ Fix some memory leaks to hopefully fix 78329.
+
+-------------------------------------------------------------------
+Tue Feb 28 20:01:14 CET 2006 - danw@suse.de
+
+- Fix infinite loop when a window is marked TRANSIENT_FOR itself
++++ 234 more lines (skipped)
++++ between /dev/null
++++ and /mounts/work_src_done/STABLE/libwnck-1-22/libwnck-1-22.changes
New:
----
libwnck-1-22.changes
libwnck-1-22.spec
libwnck-2.12.2-window-move-1.patch
libwnck-2.19.4.tar.bz2
libwnck-border_width-fix-2.patch
libwnck-opacity-2.patch
libwnck-realistic-layout.patch
libwnck-viewport-2.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libwnck-1-22.spec ++++++
#
# spec file for package libwnck-1-22 (Version 2.19.4)
#
# Copyright (c) 2007 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
# package are under the same license as the package itself.
#
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
# norootforbuild
Name: libwnck-1-22
%define _myname libwnck
BuildRequires: gnome-common gtk-doc gtk2-devel intltool perl-XML-Parser update-desktop-files
License: LGPL v2 or later
Group: Development/Libraries/GNOME
Autoreqprov: on
Provides: libwnck
Obsoletes: libwnck
Version: 2.19.4
Release: 1
Summary: Window Navigator Construction Kit (Library Package)
Source: %{_myname}-%{version}.tar.bz2
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Patch4: libwnck-2.12.2-window-move-1.patch
Patch8: libwnck-realistic-layout.patch
Patch9: libwnck-opacity-2.patch
# someone should re-review this patch
Patch10: libwnck-viewport-2.patch
Patch11: libwnck-border_width-fix-2.patch
%description
The Window Navigator Construction Kit is a library that can be used to
write task lists, pagers, and similar GNOME programs.
Authors:
--------
Havoc Pennington
%package -n libwnck-devel
Summary: Include Files and Libraries mandatory for Development.
Group: Development/Libraries/GNOME
Requires: %{name} = %{version} gtk2-devel
Provides: libwnck-devel
Obsoletes: libwnck-devel
%description -n libwnck-devel
This package contains all necessary include files and libraries needed
to develop applications that require these.
Authors:
--------
Havoc Pennington
%package -n libwnck-doc
Summary: Window Navigator Construction Kit (Library Package)
Group: Development/Libraries/GNOME
Requires: %{name} = %{version}
Provides: libwnck-doc
Obsoletes: libwnck-doc
%description doc
The Window Navigator Construction Kit is a library that can be used to
write task lists, pagers, and similar GNOME programs.
Authors:
--------
Havoc Pennington
%prep
%setup -n %{_myname}-%{version} -q
%patch4
%patch8
%patch9
%patch10
%patch11
%build
autoreconf -f -i
# needed for libwnck-2.16.1:
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
%configure\
--disable-static
make %{?jobs:-j%jobs}
%install
%makeinstall
%find_lang %{_myname}
%post
%run_ldconfig
%postun
%run_ldconfig
%files -f %files -f %{_myname}.lang
%defattr(-,root,root)
%doc AUTHORS COPYING README NEWS ChangeLog
%{_libdir}/*.so.*
%files -n libwnck-devel
%defattr(-,root,root)
%{_includedir}/libwnck-1.0
%{_libdir}/pkgconfig/*.pc
%{_libdir}/*.*a
%{_libdir}/*.so
%files -n libwnck-doc
%defattr(-,root,root)
%{_datadir}/gtk-doc/html/*
%clean
rm -rf $RPM_BUILD_ROOT
%changelog
* Sat Jul 14 2007 - mrueckert@suse.de
- use libwnck-devel and libwnck-doc. the file content would conflict
anyway so there is no need to have them as versioned subpackages.
* Mon Jul 09 2007 - maw@suse.de
- Following up on the package rename, add some new
Provides/Obsoletes.
* Fri Jul 06 2007 - maw@suse.de
- Update to version 2.19.4, and rename to libwnck-1-22 to match
sonames.
- Remove upstreamed libwnck-216129-tasklist-crash.patch
* Tue May 29 2007 - danw@suse.de
- Add libwnck-216129-tasklist-crash.patch from upstream to fix a
panel crash. #216129
* Fri Mar 23 2007 - maw@suse.de
- Update to version 2.18.0
- Minor changes:
* libwnck/tasklist.c: (wnck_tasklist_scroll_cb): fix left/right
scroll for RTL
* libwnck/pager.c: (wnck_update_drag_icon): improve a bit, so
that the icon has a good width/height ratio, and is not always
huge
* libwnck/pager.c: (wnck_pager_set_n_rows): don't accept to set to
less than 1 row. Again. (My one-line patch was broken ;-))
* test-tasklist.c: add an option to always group windows, and default
to automatic grouping
* test-tasklist.c: (main):
* test-selector.c: (main): don't use gtk_window_set_policy(), but
gtk_window_set_resizable()
* libwnck/pager.c: (wnck_pager_set_n_rows): don't accept to set to
less than 1 row
* Mon Feb 19 2007 - maw@suse.de
- Update to version 2.17.91
* Wed Feb 07 2007 - sbrabec@suse.cz
- Do not build unusable static libraries (#238552).
* Wed Dec 13 2006 - sbrabec@suse.cz
- Prefix changed to /usr.
- Spec file cleanup.
* Tue Nov 07 2006 - dreveman@suse.de
- Fix viewport patch so it doesn't crash when creating action menu
for windows that are visible on more than one workspace. #217262
* Wed Oct 18 2006 - sbrabec@suse.cz
- Enabled creating of doc package (#193240).
* Mon Oct 16 2006 - dreveman@suse.de
- Fix broken border width patch. 178222.
- Remove ibwnck-2.12.2-virtual-aspect-1.patch, it's no longer
needed.
* Tue Oct 03 2006 - jhargadon@suse.de
- update to version 2.16.1
- Fix critical warning and leak
- Avoid sending spurious icon geometry updates
- Require GTK+ 2.8.0
- translation updates
* Fri Sep 15 2006 - jhargadon@suse.de
- update to version 2.16.0
- translation updates
* Thu Aug 31 2006 - jhargadon@suse.de
- update to version 2.15.92
- Fix crash when tasklist is destroyed
- Update delete icon for the context menu
- translation updates
* Tue Aug 15 2006 - jhargadon@suse.de
- update to version 2.15.91
- Changed the glowing code to have less and saner style properties
* Fri Aug 04 2006 - gekker@suse.de
- Update to version 2.15.90
- Remove upstreamed patches
Features
- Add move/resize window API (Magnus Therning)
- Improve glowing effect in tasklist and make it themeable (Benjamin Berg)
[#325176]
- Use cairo in the pager (Benjamin Otte) [#339293]
- Improve drag and drop in the pager (Nickolay V. Shmyrev, Benjamin Otte)
[#96675, #339293]
- Improve look of the pager (Benjamin Otte) [#339293]
- Add dragging of windows from the tasklist (Nickolay V. Shmyrev) [#96675]
- Sort window in a group alphabetically (Xavier Claessens, Vincent)
- Change active window when scrolling on the selector (Nigel Tao)
- Add scrolling support to the tasklist (Xavier Claessens)
Fixes
- Correctly set relief for group buttons in the tasklist (Benjamin Otte)
- Make windows that go to the bottom occupy the last pixel of the pager
(Benjamin Otte)
- Fix crashes
- Don't change workspace when releasing the button on another workspace
(Vincent) [#110510]
- Fix leaks (Dan Winship) [#334137]
- Fix minimization of "always on visible desktop" windows with the tasklist
(Vincent) [#335316]
- Fix transient cycles causing infinite loops (Dan Winship, Elijah) [#332493]
- Immediately show notification for demands-attent/urgent windows on other
workspaces in the tasklist (Leszek Matok) [#336142]
- Don't minimize the window when it's on another desktop and it was the last
active window (Vincent) [#331661]
- Fix C89 compliance (Jens Granseuer) [#332866]
- Fix window disappearing in workspace switcher after drag and drop (Vincent)
[#317373]
- Fix corrupted drawing of windows (Vincent) [#155502]
- Include demands-attention/urgent windows unconditionally in
tasklist; this should help users not miss important windows on
other workspaces (Elijah) [#305979]
- Synchronize the right-click-menu with that of Metacity's (Srirama
Sharma, Leena Gunda, Christian Neumair) [#135710]
- Escape window titles used in pango markup, avoids some crashes too
(Vincent Noel, jylefort FreeBSD org) [#306289]
- Correctly catch and handle demands-attention/urgent state changes
for transients of windows in the tasklist (Elijah) [#317541]
- Make the pager Fitts's law compliant when shadow type is none
(Vincent) [#304248]
- Correctly specify the source indication (Elijah)
- Use virtual desktop size when computing size of pager (Loic Minier, Vincent)
Update Translations
* Tue May 30 2006 - danw@suse.de
- Patch in a new method from libwnck HEAD to allow compiz to know
when a window has a real name (as opposed to a fallback name like
"untitled window"). #173059
* Fri May 12 2006 - dreveman@suse.de
- Fix so that correct geometry is returned when border width is
greater than 0. (bnc 178222)
* Thu May 04 2006 - dreveman@suse.de
- Add opacity window action sub-menu patch.
(libwnck-opacity-2.patch)
- Add patch for viewport options in window action menu.
(libwnck-2.12.2-viewport-1.patch) (bnc 160004)
* Thu Apr 27 2006 - joeshaw@suse.de
- Add a patch to fix some layout and grouping bugs in the tasklist.
(bnc #148840)
* Tue Mar 07 2006 - danw@suse.de
- Fix a crash in libwnck-2.12.2-virtual-aspect-1.patch (144722).
Fix some memory leaks to hopefully fix 78329.
* Tue Feb 28 2006 - danw@suse.de
- Fix infinite loop when a window is marked TRANSIENT_FOR itself
(116722)
* Wed Feb 15 2006 - gekker@suse.de
- Fix crash on window switch (b.g.o#327435)
* Wed Jan 25 2006 - mls@suse.de
- converted neededforbuild to BuildRequires
* Sat Jan 07 2006 - dreveman@suse.de
- Add window movement patch
* Wed Jan 04 2006 - dreveman@suse.de
- Add virtual desktop aspect ratio patch
* Wed Nov 30 2005 - gekker@suse.de
- Update to version 2.12.2
* Thu Oct 13 2005 - gekker@suse.de
- Update to version 2.12.1
* Mon Sep 05 2005 - mmj@suse.de
- Update to version 2.12.0 (GNOME 2.12)
* Mon Aug 22 2005 - rodrigo@suse.de
- Update to version 2.11.92
* Thu Aug 11 2005 - gekker@suse.de
- Update to version 2.11.91
- Fix use of unitialized variable
* Fri Jul 22 2005 - gekker@suse.de
- Update to version 2.11.4
* Wed Jun 22 2005 - gekker@suse.de
- Update to version 2.11.3
* Wed Jun 01 2005 - sbrabec@suse.cz
- Fixed devel requirements.
* Thu Mar 10 2005 - gekker@suse.de
- Update to version 2.10.0 (GNOME 2.10).
* Fri Mar 04 2005 - gekker@suse.de
- Update to version 2.9.92.1
* Fri Feb 11 2005 - gekker@suse.de
- Update to version 2.9.91
* Sun Feb 06 2005 - gekker@suse.de
- Update to version 2.9.90
* Tue Jan 04 2005 - gekker@suse.de
- Update to version 2.9.3
* Tue Dec 21 2004 - gekker@suse.de
- Update to version 2.8.1.
- Add gtk-doc to needed for build, release version now requires it
- Add --disable-html-dir to keep html docs from being built
* Tue Nov 23 2004 - ro@suse.de
- do not use libXRes on 9.0-x86_64
* Fri Nov 19 2004 - ro@suse.de
- removed extra aclocal include directive
* Mon Oct 25 2004 - ro@suse.de
- locale rename: no -> nb
* Thu Apr 15 2004 - sbrabec@suse.cz
- Updated to version 2.6.0.1 (GNOME 2.6).
* Sat Jan 10 2004 - adrian@suse.de
- add %%defattr and %%run_ldconfig
* Tue Oct 07 2003 - sbrabec@suse.cz
- Updated to version 2.4.0.1 (GNOME 2.4).
* Tue Jul 15 2003 - pthomas@suse.de
- Clean up the code, specially where dereferencing type-punned
pointers would break alias analysis.
* Mon Jul 14 2003 - sbrabec@suse.cz
- GNOME prefix change to /opt/gnome.
* Tue Jun 24 2003 - sbrabec@suse.cz
- Updated to version 2.2.2.
- Use %%find_lang.
* Mon Jun 02 2003 - ro@suse.de
- add translations to filelist
* Wed Jan 29 2003 - hhetter@suse.de
- update to version 2.2.0
* Thu Jan 16 2003 - hhetter@suse.de
- updated to version 2.1.90
- use gtk2-devel-packages in #neededforbuild
* Wed Jan 15 2003 - sbrabec@suse.cz
- Added expat to neededforbuild.
* Thu Nov 28 2002 - hhetter@suse.de
- updated to version 0.18 [GNOME 2.0.3]
* Mon Nov 11 2002 - ro@suse.de
- changed neededforbuild <xf86 xdevel> to <x-devel-packages>
* Thu Oct 24 2002 - hhetter@suse.de
- use "-c" with automake (Bug Id #21066)
* Fri Aug 09 2002 - hhetter@suse.de
- updated to version 0.16
* Wed Jun 19 2002 - ro@suse.de
- use "-a -f" for automake
* Wed Jun 19 2002 - hhetter@suse.de
- updated to version 0.14
* Tue Jun 04 2002 - hhetter@suse.de
- updated to version 0.13, sorce frozen
* Wed May 15 2002 - ro@suse.de
- use libdir
* Wed Apr 10 2002 - hhetter@suse.de
- updated to version 0.7
* Thu Jan 17 2002 - hhetter@suse.de
- really prefixed to /opt/gnome2
* Thu Jan 17 2002 - hhetter@suse.de
- prefixed to /opt/gnome2
* Wed Jan 16 2002 - hhetter@suse.de
- updated to version 0.2
* Tue Jan 15 2002 - hhetter@suse.de
- fixed prefix
* Mon Jan 14 2002 - hhetter@suse.de
- initial SuSE package for GNOME 2.0 platform
- build with automake 1.5
++++++ libwnck-2.12.2-window-move-1.patch ++++++
--- libwnck/window.c
+++ libwnck/window.c
@@ -1165,6 +1165,20 @@
window->priv->xwindow);
}
+void
+wnck_window_move (WnckWindow *window, int x, int y)
+{
+ g_return_if_fail (WNCK_IS_WINDOW (window));
+
+ _wnck_move_resize (WNCK_SCREEN_XSCREEN (window->priv->screen),
+ window->priv->xwindow,
+ TRUE,
+ FALSE,
+ x, y,
+ 0, 0);
+}
+
+
/**
* wnck_window_get_workspace:
* @window: a #WnckWindow
--- libwnck/window.h
+++ libwnck/window.h
@@ -217,6 +217,7 @@
void wnck_window_unstick (WnckWindow *window);
void wnck_window_keyboard_move (WnckWindow *window);
void wnck_window_keyboard_size (WnckWindow *window);
+void wnck_window_move (WnckWindow *window, int x, int y);
WnckWorkspace* wnck_window_get_workspace (WnckWindow *window);
void wnck_window_move_to_workspace (WnckWindow *window,
--- libwnck/xutils.c
+++ libwnck/xutils.c
@@ -919,6 +919,38 @@
}
void
+_wnck_move_resize (Screen *screen,
+ Window xwindow,
+ gboolean move,
+ gboolean resize,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height)
+{
+ XEvent xev;
+
+ xev.xclient.type = ClientMessage;
+ xev.xclient.serial = 0;
+ xev.xclient.send_event = True;
+ xev.xclient.display = gdk_display;
+ xev.xclient.window = xwindow;
+ xev.xclient.message_type = _wnck_atom_get ("_NET_MOVERESIZE_WINDOW");
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = ((move) ? 3 << 7 : 0) | ((resize) ? 3 << 9 : 0);
+ xev.xclient.data.l[1] = x;
+ xev.xclient.data.l[2] = y;
+ xev.xclient.data.l[3] = width;
+ xev.xclient.data.l[4] = height;
+
+ XSendEvent (gdk_display,
+ RootWindowOfScreen (screen),
+ False,
+ SubstructureRedirectMask | SubstructureNotifyMask,
+ &xev);
+}
+
+void
_wnck_change_state (Screen *screen,
Window xwindow,
gboolean add,
--- libwnck/xutils.h
+++ libwnck/xutils.h
@@ -126,6 +126,15 @@
void _wnck_keyboard_size (Screen *screen,
Window xwindow);
+void _wnck_move_resize (Screen *screen,
+ Window xwindow,
+ gboolean move,
+ gboolean resize,
+ int x,
+ int y,
+ unsigned int width,
+ unsigned int height);
+
void _wnck_toggle_showing_desktop (Screen *screen,
gboolean show);
++++++ libwnck-border_width-fix-2.patch ++++++
--- libwnck/window.c 28 Mar 2006 21:49:20 -0000 1.64
+++ libwnck/window.c 11 May 2006 00:01:07 -0000
@@ -1761,8 +1806,10 @@
&window->priv->y);
}
- window->priv->width = xevent->xconfigure.width;
- window->priv->height = xevent->xconfigure.height;
+ window->priv->width = xevent->xconfigure.width +
+ xevent->xconfigure.border_width * 2;
+ window->priv->height = xevent->xconfigure.height +
+ xevent->xconfigure.border_width * 2;
emit_geometry_changed (window);
}
--- libwnck/xutils.c 25 Mar 2006 08:59:28 -0000 1.55
+++ libwnck/xutils.c 11 May 2006 00:01:08 -0000
@@ -2227,9 +2267,9 @@
_wnck_get_window_position (screen, xwindow, xp, yp);
if (widthp)
- *widthp = width;
+ *widthp = width + bw * 2;
if (heightp)
- *heightp = height;
+ *heightp = height + bw * 2;
}
void
++++++ libwnck-opacity-2.patch ++++++
Index: libwnck/window-action-menu.c
===================================================================
--- libwnck/window-action-menu.c.orig
+++ libwnck/window-action-menu.c
@@ -48,6 +48,7 @@ typedef enum
ABOVE,
MOVE,
RESIZE,
+ CHANGE_OPACITY,
PIN,
UNPIN,
LEFT,
@@ -68,6 +69,7 @@ struct _ActionMenuData
GtkWidget *above_item;
GtkWidget *move_item;
GtkWidget *resize_item;
+ GtkWidget *opacity_item;
GtkWidget *close_item;
GtkWidget *workspace_separator;
GtkWidget *pin_item;
@@ -134,7 +136,7 @@ item_activated_callback (GtkWidget *menu
{
ActionMenuData *amd = get_data (menu_item);
WindowAction action = GPOINTER_TO_INT (data);
-
+
if (amd == NULL)
return;
@@ -170,6 +172,15 @@ item_activated_callback (GtkWidget *menu
case RESIZE:
wnck_window_keyboard_size (amd->window);
break;
+ case CHANGE_OPACITY: {
+ int opacity_value;
+
+ opacity_value =
+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item),
+ "opacity"));
+
+ wnck_window_set_opacity (amd->window, opacity_value);
+ } break;
case PIN:
wnck_window_unpin (amd->window);
break;
@@ -741,6 +752,47 @@ wnck_create_window_action_menu (WnckWind
g_free (label);
}
+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
+ "_NET_WM_WINDOW_OPACITY"))
+ {
+ guint present_opacity;
+ gint j;
+
+ amd->opacity_item = gtk_menu_item_new_with_mnemonic (_("_Opacity"));
+ gtk_widget_show (amd->opacity_item);
+
+ submenu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->opacity_item),
+ submenu);
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), amd->opacity_item);
+
+ present_opacity = wnck_window_get_opacity (window);
+ for (j = 0; j < 4; j++)
+ {
+ GtkWidget *item;
+ gchar *label;
+ guint o;
+
+ label = g_strdup_printf ("%d%%", (j + 1) * 25);
+
+ item = make_menu_item (amd, CHANGE_OPACITY);
+
+ o = (j + 1) * 25;
+ g_object_set_data (G_OBJECT (item), "opacity", GINT_TO_POINTER (o));
+
+ if (o == present_opacity)
+ gtk_widget_set_sensitive (item, FALSE);
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
+
+ set_item_text (item, label);
+ set_item_stock (item, NULL);
+
+ g_free (label);
+ }
+ }
+
separator = gtk_separator_menu_item_new ();
gtk_widget_show (separator);
gtk_menu_shell_append (GTK_MENU_SHELL (menu),
Index: libwnck/window.c
===================================================================
--- libwnck/window.c.orig
+++ libwnck/window.c
@@ -106,6 +106,8 @@ struct _WnckWindowPrivate
char *res_class;
char *res_name;
+
+ guint32 opacity;
/* true if transient_for points to root window,
* not another app window
@@ -150,6 +152,7 @@ struct _WnckWindowPrivate
guint need_update_startup_id : 1;
guint need_update_wmclass : 1;
guint need_update_wmhints : 1;
+ guint need_update_opacity : 1;
guint need_update_frame_extents : 1;
guint need_emit_name_changed : 1;
@@ -165,6 +168,7 @@ enum {
ICON_CHANGED,
ACTIONS_CHANGED,
GEOMETRY_CHANGED,
+ OPACITY_CHANGED,
LAST_SIGNAL
};
@@ -193,6 +197,7 @@ static void update_wintype (WnckWindow
static void update_transient_for (WnckWindow *window);
static void update_startup_id (WnckWindow *window);
static void update_wmclass (WnckWindow *window);
+static void update_opacity (WnckWindow *window);
static void update_frame_extents (WnckWindow *window);
static void unqueue_update (WnckWindow *window);
static void queue_update (WnckWindow *window);
@@ -325,6 +330,15 @@ wnck_window_class_init (WnckWindowClass
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+
+ signals[OPACITY_CHANGED] =
+ g_signal_new ("opacity_changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (WnckWindowClass, opacity_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
}
static void
@@ -459,6 +473,7 @@ _wnck_window_create (Window xwindow
window->priv->need_update_startup_id = TRUE;
window->priv->need_update_wmclass = TRUE;
window->priv->need_update_wmhints = TRUE;
+ window->priv->need_update_opacity = TRUE;
window->priv->need_update_frame_extents = TRUE;
window->priv->need_emit_name_changed = FALSE;
window->priv->need_emit_icon_changed = FALSE;
@@ -2097,6 +2112,29 @@ wnck_window_set_geometry (WnckWindow
gravity_and_flags, x, y, width, height);
}
+guint
+wnck_window_get_opacity (WnckWindow *window)
+{
+ guint64 o;
+
+ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0);
+
+ o = ((guint64) window->priv->opacity * 1005) / G_MAXUINT32;
+
+ return o / 10;
+}
+
+void
+wnck_window_set_opacity (WnckWindow *window,
+ guint opacity)
+{
+ g_return_if_fail (WNCK_IS_WINDOW (window));
+
+ _wnck_change_opacity (WNCK_SCREEN_XSCREEN (window->priv->screen),
+ wnck_window_get_xid (window),
+ (((guint64) opacity * G_MAXUINT32) / 100));
+}
+
/**
* wnck_window_is_visible_on_workspace:
* @window: a #WnckWindow.
@@ -2342,6 +2380,13 @@ _wnck_window_process_property_notify (Wn
window->priv->need_update_frame_extents = TRUE;
queue_update (window);
}
+ else if (xevent->xproperty.atom ==
+ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"))
+ {
+ window->priv->need_update_opacity = TRUE;
+ queue_update (window);
+ }
+
}
void
@@ -2893,6 +2938,17 @@ update_frame_extents (WnckWindow *window
}
static void
+update_opacity (WnckWindow *window)
+{
+ if (!window->priv->need_update_opacity)
+ return;
+
+ window->priv->need_update_opacity = FALSE;
+
+ window->priv->opacity = _wnck_get_opacity (window->priv->xwindow);
+}
+
+static void
force_update_now (WnckWindow *window)
{
WnckWindowState old_state;
@@ -2927,6 +2983,7 @@ force_update_now (WnckWindow *window)
*/
update_workspace (window); /* emits signals */
update_actions (window);
+ update_opacity (window);
update_frame_extents (window); /* emits signals */
get_icons (window);
Index: libwnck/window.h
===================================================================
--- libwnck/window.h.orig
+++ libwnck/window.h
@@ -268,6 +268,9 @@ struct _WnckWindowClass
/* Changed size/position */
void (* geometry_changed) (WnckWindow *window);
+ /* Changed opacity */
+ void (* opacity_changed) (WnckWindow *window);
+
/* Padding for future expansion */
void (* pad1) (void);
void (* pad2) (void);
@@ -394,6 +397,9 @@ void wnck_window_set_geometry (WnckWindo
int width,
int height);
+guint wnck_window_get_opacity (WnckWindow *window);
+void wnck_window_set_opacity (WnckWindow *window, guint opacity);
+
gboolean wnck_window_is_visible_on_workspace (WnckWindow *window,
WnckWorkspace *workspace);
gboolean wnck_window_is_on_workspace (WnckWindow *window,
Index: libwnck/xutils.c
===================================================================
--- libwnck/xutils.c.orig
+++ libwnck/xutils.c
@@ -1124,6 +1124,33 @@ _wnck_toggle_showing_desktop (Screen *s
&xev);
}
+void
+_wnck_change_opacity (Screen *screen,
+ Window xwindow,
+ guint32 opacity)
+{
+ XEvent xev;
+
+ xev.xclient.type = ClientMessage;
+ xev.xclient.serial = 0;
+ xev.xclient.send_event = True;
+ xev.xclient.display = gdk_display;
+ xev.xclient.window = xwindow;
+ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_OPACITY");
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = opacity;
+ xev.xclient.data.l[1] = 0;
+ xev.xclient.data.l[2] = 0;
+ xev.xclient.data.l[3] = 0;
+ xev.xclient.data.l[4] = 0;
+
+ XSendEvent (gdk_display,
+ RootWindowOfScreen (screen),
+ False,
+ SubstructureRedirectMask | SubstructureNotifyMask,
+ &xev);
+}
+
char*
_wnck_get_session_id (Window xwindow)
{
@@ -1298,6 +1325,19 @@ _wnck_get_frame_extents (Window xwindow
return retval;
}
+guint32
+_wnck_get_opacity (Window xwindow)
+{
+ int val;
+
+ if (_wnck_get_cardinal (xwindow,
+ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"),
+ &val))
+ return val;
+
+ return G_MAXUINT32;
+}
+
void
_wnck_select_input (Window xwindow,
int mask)
Index: libwnck/xutils.h
===================================================================
--- libwnck/xutils.h.orig
+++ libwnck/xutils.h
@@ -109,6 +109,9 @@ void _wnck_activate_workspace (Screen *s
void _wnck_change_viewport (Screen *screen,
int x,
int y);
+void _wnck_change_opacity (Screen *screen,
+ Window xwindow,
+ guint32 opacity);
char* _wnck_get_session_id (Window xwindow);
int _wnck_get_pid (Window xwindow);
@@ -124,6 +127,9 @@ gboolean _wnck_get_frame_extents (Windo
int *top_frame,
int *bottom_frame);
+guint32 _wnck_get_opacity (Window xwindow);
+
+
void _wnck_select_input (Window xwindow,
int mask);
++++++ libwnck-realistic-layout.patch ++++++
This fixes a problem of overaggressively grouping windows in the
tasklist with our default size 24 panel. See bnc #148840 for
details and a screenshot.
Index: libwnck/tasklist.c
===================================================================
RCS file: /cvs/gnome/libwnck/libwnck/tasklist.c,v
retrieving revision 1.87
diff -u -p -u -r1.87 tasklist.c
--- libwnck/tasklist.c 3 Oct 2005 19:42:46 -0000 1.87
+++ libwnck/tasklist.c 26 Apr 2006 21:45:51 -0000
@@ -185,6 +185,9 @@ struct _WnckTasklistPrivate
gint minimum_width;
gint minimum_height;
+ gint last_width;
+ gint last_height;
+
WnckLoadIconFunction icon_loader;
void *icon_loader_data;
GDestroyNotify free_icon_loader_data;
@@ -694,6 +697,9 @@ wnck_tasklist_init (WnckTasklist *taskli
tasklist->priv->minimum_width = DEFAULT_WIDTH;
tasklist->priv->minimum_height = DEFAULT_HEIGHT;
+ tasklist->priv->last_width = -1;
+ tasklist->priv->last_height = -1;
+
tasklist->priv->idle_callback_tag = 0;
tasklist->priv->monitor_num = -1;
@@ -1170,8 +1176,15 @@ wnck_tasklist_size_request (GtkWidget
requisition->width = tasklist->priv->minimum_width;
requisition->height = tasklist->priv->minimum_height;
- fake_allocation.width = requisition->width;
- fake_allocation.height = requisition->height;
+ if (tasklist->priv->last_width != -1)
+ fake_allocation.width = tasklist->priv->last_width;
+ else
+ fake_allocation.width = requisition->width;
+
+ if (tasklist->priv->last_height != -1)
+ fake_allocation.height = tasklist->priv->last_height;
+ else
+ fake_allocation.height = requisition->height;
array = g_array_new (FALSE, FALSE, sizeof (int));
@@ -1298,6 +1311,9 @@ wnck_tasklist_size_allocate (GtkWidget
int grouping_limit;
tasklist = WNCK_TASKLIST (widget);
+
+ tasklist->priv->last_width = allocation->width;
+ tasklist->priv->last_height = allocation->height;
n_windows = g_list_length (tasklist->priv->windows);
n_startup_sequences = g_list_length (tasklist->priv->startup_sequences);
++++++ libwnck-viewport-2.patch ++++++
Only in .: config.h
Only in .: config.log
Only in .: config.status
Only in ./doc: Makefile
Only in .: intltool-extract
Only in .: intltool-merge
Only in .: intltool-update
Only in .: libtool
Only in ./libwnck: application.lo
Only in ./libwnck: application.o
Only in ./libwnck: class-group.lo
Only in ./libwnck: class-group.o
Only in ./libwnck: .deps
Only in ./libwnck: .libs
Only in ./libwnck: libwnck-1.la
Only in ./libwnck: Makefile
Only in ./libwnck: pager-accessible-factory.lo
Only in ./libwnck: pager-accessible-factory.o
Only in ./libwnck: pager-accessible.lo
Only in ./libwnck: pager-accessible.o
Only in ./libwnck: pager.lo
Only in ./libwnck: pager.o
Only in ./libwnck: screen.lo
Only in ./libwnck: screen.o
Only in ./libwnck: selector.lo
Only in ./libwnck: selector.o
Only in ./libwnck: stamp-wnck-enum-types.h
Only in ./libwnck: stamp-wnck-marshal.h
Only in ./libwnck: tasklist.lo
Only in ./libwnck: tasklist.o
Only in ./libwnck: test-pager
Only in ./libwnck: test-pager.o
Only in ./libwnck: test-selector
Only in ./libwnck: test-selector.o
Only in ./libwnck: test-tasklist
Only in ./libwnck: test-tasklist.o
Only in ./libwnck: test-wnck
Only in ./libwnck: test-wnck.o
Only in ./libwnck: util.lo
Only in ./libwnck: util.o
Index: libwnck/window-action-menu.c
===================================================================
--- libwnck/window-action-menu.c.orig
+++ libwnck/window-action-menu.c
@@ -55,7 +55,13 @@ typedef enum
RIGHT,
UP,
DOWN,
- MOVE_TO_WORKSPACE
+ MOVE_TO_WORKSPACE,
+ STICK,
+ VIEWPORT_LEFT,
+ VIEWPORT_RIGHT,
+ VIEWPORT_UP,
+ VIEWPORT_DOWN,
+ MOVE_TO_VIEWPORT
} WindowAction;
typedef struct _ActionMenuData ActionMenuData;
@@ -79,6 +85,13 @@ struct _ActionMenuData
GtkWidget *up_item;
GtkWidget *down_item;
GtkWidget *workspace_item;
+ GtkWidget *viewport_separator;
+ GtkWidget *stick_item;
+ GtkWidget *viewport_left_item;
+ GtkWidget *viewport_right_item;
+ GtkWidget *viewport_up_item;
+ GtkWidget *viewport_down_item;
+ GtkWidget *viewport_item;
guint idle_handler;
};
@@ -234,7 +247,73 @@ item_activated_callback (GtkWidget *menu
workspace_index));
break;
}
+ case STICK:
+ if (wnck_window_is_sticky (amd->window))
+ wnck_window_unstick (amd->window);
+ else
+ wnck_window_stick (amd->window);
+ break;
+ case VIEWPORT_LEFT:
+ {
+ int width, xw, yw;
+
+ width = wnck_screen_get_width (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, NULL, NULL);
+ wnck_window_move (amd->window, xw - width, yw);
+ break;
+ }
+ case VIEWPORT_RIGHT:
+ {
+ int width, xw, yw;
+
+ width = wnck_screen_get_width (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, NULL, NULL);
+ wnck_window_move (amd->window, xw + width, yw);
+ break;
+ }
+ case VIEWPORT_UP:
+ {
+ int height, xw, yw;
+
+ height = wnck_screen_get_height (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, NULL, NULL);
+ wnck_window_move (amd->window, xw, yw - height);
+ break;
+ }
+ case VIEWPORT_DOWN:
+ {
+ int height, xw, yw;
+
+ height = wnck_screen_get_height (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, NULL, NULL);
+ wnck_window_move (amd->window, xw, yw + height);
+ break;
}
+ case MOVE_TO_VIEWPORT:
+ {
+ WnckWorkspace *workspace;
+ int viewport_x, viewport_y, xw, yw, x, y;
+
+ workspace = wnck_window_get_workspace (amd->window);
+ if (!workspace)
+ workspace = wnck_screen_get_workspace (wnck_window_get_screen (amd->window), 0);
+ viewport_x = wnck_workspace_get_viewport_x (workspace);
+ viewport_y = wnck_workspace_get_viewport_y (workspace);
+
+ x = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), "x"));
+ y = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), "y"));
+
+ wnck_window_get_geometry (amd->window, &xw, &yw, NULL, NULL);
+
+ if (wnck_window_is_sticky (amd->window))
+ wnck_window_unstick (amd->window);
+
+ wnck_window_move (amd->window,
+ xw + x - viewport_x,
+ yw + y - viewport_y);
+ break;
+ }
+ }
}
static void
@@ -397,6 +476,56 @@ update_menu_state (ActionMenuData *amd)
gtk_widget_show (amd->unpin_item);
gtk_widget_hide (amd->workspace_item);
}
+
+ if (wnck_window_is_sticky (amd->window))
+ {
+ set_item_text (amd->stick_item, _("_Only in This Viewport"));
+ set_item_stock (amd->stick_item, NULL);
+ gtk_widget_set_sensitive (amd->stick_item,
+ (actions & WNCK_WINDOW_ACTION_STICK) != 0);
+ }
+ else
+ {
+ set_item_text (amd->stick_item, _("_Always in Visible Viewport"));
+ set_item_stock (amd->stick_item, NULL);
+ gtk_widget_set_sensitive (amd->stick_item,
+ (actions & WNCK_WINDOW_ACTION_STICK) != 0);
+ }
+
+ if (!wnck_window_is_sticky (amd->window))
+ {
+ if (amd->viewport_item)
+ gtk_widget_set_sensitive (amd->viewport_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_left_item)
+ gtk_widget_set_sensitive (amd->viewport_left_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_right_item)
+ gtk_widget_set_sensitive (amd->viewport_right_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_up_item)
+ gtk_widget_set_sensitive (amd->viewport_up_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_down_item)
+ gtk_widget_set_sensitive (amd->viewport_down_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+ }
+ if (wnck_workspace_is_virtual (wnck_screen_get_active_workspace (screen)))
+ {
+ gtk_widget_show (amd->viewport_separator);
+ gtk_widget_show (amd->stick_item);
+ gtk_widget_show (amd->viewport_item);
+ }
+ else
+ {
+ gtk_widget_hide (amd->viewport_separator);
+ gtk_widget_hide (amd->stick_item);
+ gtk_widget_hide (amd->viewport_item);
+ }
return FALSE;
}
@@ -590,6 +719,9 @@ wnck_create_window_action_menu (WnckWind
int num_workspaces, window_space, i;
WnckWorkspace *workspace;
WnckWorkspaceLayout layout;
+ int viewport_x, viewport_y, viewport_width, viewport_height;
+ int screen_width, screen_height;
+ int x, y;
GSList *pin_group;
g_return_val_if_fail (WNCK_IS_WINDOW (window), NULL);
@@ -752,9 +884,113 @@ wnck_create_window_action_menu (WnckWind
g_free (label);
}
- if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
- "_NET_WM_WINDOW_OPACITY"))
- {
+ amd->viewport_separator = separator = gtk_separator_menu_item_new ();
+ gtk_widget_show (separator);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ separator);
+
+ amd->stick_item = make_menu_item (amd, STICK);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->stick_item);
+ set_item_stock (amd->stick_item, NULL);
+
+ workspace = wnck_window_get_workspace (amd->window);
+ if (!workspace)
+ workspace = wnck_screen_get_workspace (wnck_window_get_screen (amd->window), 0);
+
+ viewport_x = wnck_workspace_get_viewport_x (workspace);
+ viewport_y = wnck_workspace_get_viewport_y (workspace);
+ viewport_width = wnck_workspace_get_width (workspace);
+ viewport_height = wnck_workspace_get_height (workspace);
+
+ screen_width = wnck_screen_get_width (wnck_window_get_screen (amd->window));
+ screen_height = wnck_screen_get_height (wnck_window_get_screen (amd->window));
+
+ if (!wnck_window_is_sticky (amd->window))
+ {
+ if (viewport_x >= screen_width)
+ {
+ amd->viewport_left_item = make_menu_item (amd, VIEWPORT_LEFT);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_left_item);
+ set_item_text (amd->viewport_left_item, _("Move to Viewport _Left"));
+ set_item_stock (amd->viewport_left_item, NULL);
+ }
+ else
+ amd->viewport_left_item = NULL;
+
+ if (viewport_x <= viewport_width - 2 * screen_width)
+ {
+ amd->viewport_right_item = make_menu_item (amd, VIEWPORT_RIGHT);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_right_item);
+ set_item_text (amd->viewport_right_item, _("Move to Viewport R_ight"));
+ set_item_stock (amd->viewport_right_item, NULL);
+ }
+ else
+ amd->viewport_right_item = NULL;
+
+ if (viewport_y >= screen_height)
+ {
+ amd->viewport_up_item = make_menu_item (amd, VIEWPORT_UP);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_up_item);
+ set_item_text (amd->viewport_up_item, _("Move to Viewport _Up"));
+ set_item_stock (amd->viewport_up_item, NULL);
+ }
+ else
+ amd->viewport_up_item = NULL;
+
+ if (viewport_y <= viewport_height - 2 * screen_height)
+ {
+ amd->viewport_down_item = make_menu_item (amd, VIEWPORT_DOWN);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_down_item);
+ set_item_text (amd->viewport_down_item, _("Move to Viewport _Down"));
+ set_item_stock (amd->viewport_down_item, NULL);
+ }
+ else
+ amd->viewport_down_item = NULL;
+ }
+
+ amd->viewport_item = gtk_menu_item_new_with_mnemonic (_("Move to Another _Viewport"));
+ gtk_widget_show (amd->viewport_item);
+
+ submenu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->viewport_item),
+ submenu);
+
+ i = 1;
+ for (y = 0; y < viewport_height; y += screen_height)
+ {
+ char *label;
+ GtkWidget *item;
+
+ for (x = 0; x < viewport_width; x += screen_width)
+ {
+ label = g_strdup_printf (_("Viewport _%d"), i++);
+
+ item = make_menu_item (amd, MOVE_TO_VIEWPORT);
+ g_object_set_data (G_OBJECT (item), "x", GINT_TO_POINTER (x));
+ g_object_set_data (G_OBJECT (item), "y", GINT_TO_POINTER (y));
+
+ if (x == viewport_x && y == viewport_y)
+ gtk_widget_set_sensitive (item, FALSE);
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
+ set_item_text (item, label);
+ set_item_stock (item, NULL);
+
+ g_free (label);
+ }
+ }
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_item);
+
+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
+ "_NET_WM_WINDOW_OPACITY"))
+ {
guint present_opacity;
gint j;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
---------------------------------------------------------------------
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org