compiz: Changes to 'upstream-unstable'
CMakeLists.txt | 6 ++---
NEWS | 21 +++++++++++++++++
dev/null |binary
gtk/window-decorator/actionmenu.c | 2 -
gtk/window-decorator/events.c | 5 ++++
gtk/window-decorator/gtk-window-decorator.c | 7 +++++
gtk/window-decorator/gtk-window-decorator.h | 4 ++-
gtk/window-decorator/wnck.c | 33 ++++++++++++++++++++++++++--
images/CMakeLists.txt | 3 --
plugins/cube/images/freedesktop.png |binary
src/CMakeLists.txt | 2 -
src/screen.cpp | 13 +++++++----
src/window.cpp | 2 -
13 files changed, 83 insertions(+), 15 deletions(-)
New commits:
commit 011a611d42c6ab0a08d5f543d4456c3d74045b7d
Author: Sam Spilsbury <sam.spilsbury@canonical.com>
Date: Mon Mar 7 18:08:32 2011 +0800
"Update CMake Version"
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 766e7cb..f6d63d5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,8 +19,8 @@ endif (NOT CMAKE_BUILD_TYPE)
# An even micro number indicates a released version.
set (COMPIZ_VERSION_MAJOR 0)
set (COMPIZ_VERSION_MINOR 9)
-set (COMPIZ_VERSION_MICRO 2)
-set (COMPIZ_VERSION_MACRO 1)
+set (COMPIZ_VERSION_MICRO 4)
+set (COMPIZ_VERSION_MACRO 0)
set (VERSION ${COMPIZ_VERSION_MAJOR}.${COMPIZ_VERSION_MINOR}.${COMPIZ_VERSION_MICRO}.${COMPIZ_VERSION_MACRO})
set (DECOR_INTERFACE_VERSION 20110130)
commit e0825165ad99b2be07ffbe259ea1a7893855e135
Author: Sam Spilsbury <sam.spilsbury@canonical.com>
Date: Mon Mar 7 18:08:19 2011 +0800
"Update news for 0.9.4 release"
diff --git a/NEWS b/NEWS
index 7baf339..9c56700 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,24 @@
+Release 0.9.4 (2010-02-24 Sam Spilsbury <sam.spilsbury@canonical.com>)
+========================================================================
+Development Release.
+
+Main loop implementation now replaced by the GLib main loop, use custom
+event sources and event dispatch synchronisation. Allows better integration
+with plugins that require tight timing with GLib timers
+
+Moved image and data generation into buildsystem extensions, and installation
+of such data into namespaced areas on the filesystem so plugins can't
+overwrite other plugin's data
+
+Intelligently clip window shadows in decor
+
+Fixed a number of 2D decoration issues
+
+Fixed a number of reparenting, stacking and focus issues
+
+Support different frame types in gtk-window-decorator
+
+
Release 0.9.2.1 (2010-11-06 Sam Spilsbury <sam.spilsbury@canonical.com>)
========================================================================
Bugfix release.
commit 16295397033bee4ace327b6ba48830e844e77b4d
Author: Sam Spilsbury <sam.spilsbury@canonical.com>
Date: Mon Feb 28 20:57:42 2011 +0800
Fix gtk-w-d crashing when removing decoration.
Also try to detect when windows are modal and give them modal type
decorations and move freedesktop.png to cube where it will actually
be used
diff --git a/gtk/window-decorator/actionmenu.c b/gtk/window-decorator/actionmenu.c
index f1549aa..e82098e 100644
--- a/gtk/window-decorator/actionmenu.c
+++ b/gtk/window-decorator/actionmenu.c
@@ -36,7 +36,7 @@ position_action_menu (GtkMenu *menu,
{
WnckWindow *win = (WnckWindow *) user_data;
WnckWindowType win_type = wnck_window_get_window_type (win);
- decor_frame_t *frame = gwd_get_decor_frame (get_frame_type (win_type));
+ decor_frame_t *frame = gwd_get_decor_frame (win);
decor_t *d = g_object_get_data (G_OBJECT (win), "decor");
gint bx, by, width, height;
diff --git a/gtk/window-decorator/events.c b/gtk/window-decorator/events.c
index f3213e5..d5dd8e8 100644
--- a/gtk/window-decorator/events.c
+++ b/gtk/window-decorator/events.c
@@ -1006,11 +1006,16 @@ event_filter_func (GdkXEvent *gdkxevent,
d->context = NULL;
d->width = d->height = 0;
+ d->frame = gwd_get_decor_frame (get_frame_type (win));
+
update_window_decoration_size (win);
update_event_windows (win);
}
else
{
+ gwd_decor_frame_unref (d->frame);
+ d->frame = NULL;
+
gdk_error_trap_push ();
XDeleteProperty (xdisplay, xid, win_decor_atom);
gdk_display_sync (gdk_display_get_default ());
diff --git a/gtk/window-decorator/gtk-window-decorator.c b/gtk/window-decorator/gtk-window-decorator.c
index 03c558c..dc22492 100644
--- a/gtk/window-decorator/gtk-window-decorator.c
+++ b/gtk/window-decorator/gtk-window-decorator.c
@@ -49,6 +49,10 @@ Atom toolkit_action_atom;
Atom toolkit_action_window_menu_atom;
Atom toolkit_action_force_quit_dialog_atom;
+Atom net_wm_state_atom;
+Atom net_wm_state_modal_atom;
+
+
Time dm_sn_timestamp;
struct _cursor cursor[3][3] = {
@@ -271,6 +275,9 @@ main (int argc, char *argv[])
XInternAtom (xdisplay, "_COMPIZ_TOOLKIT_ACTION_FORCE_QUIT_DIALOG",
FALSE);
+ net_wm_state_atom = XInternAtom (xdisplay,"_NET_WM_STATE", 0);
+ net_wm_state_modal_atom = XInternAtom (xdisplay, "_NET_MW_STATE_MODAL", 0);
+
status = decor_acquire_dm_session (xdisplay,
gdk_screen_get_number (gdkscreen),
"gwd", replace, &dm_sn_timestamp);
diff --git a/gtk/window-decorator/gtk-window-decorator.h b/gtk/window-decorator/gtk-window-decorator.h
index 6b43a94..c8eb4c5 100644
--- a/gtk/window-decorator/gtk-window-decorator.h
+++ b/gtk/window-decorator/gtk-window-decorator.h
@@ -307,6 +307,8 @@ extern Atom compiz_shadow_color_atom;
extern Atom toolkit_action_atom;
extern Atom toolkit_action_window_menu_atom;
extern Atom toolkit_action_force_quit_dialog_atom;
+extern Atom net_wm_state_atom;
+extern Atom net_wm_state_modal_atom;
extern Time dm_sn_timestamp;
@@ -648,7 +650,7 @@ copy_to_front_buffer (decor_t *d);
/* wnck.c*/
const gchar *
-get_frame_type (WnckWindowType type);
+get_frame_type (WnckWindow *win);
void
decorations_changed (WnckScreen *screen);
diff --git a/gtk/window-decorator/wnck.c b/gtk/window-decorator/wnck.c
index 2118511..50a5b2c 100644
--- a/gtk/window-decorator/wnck.c
+++ b/gtk/window-decorator/wnck.c
@@ -26,14 +26,43 @@
#include "gtk-window-decorator.h"
const gchar *
-get_frame_type (WnckWindowType wnck_type)
+get_frame_type (WnckWindow *win)
{
+ WnckWindowType wnck_type = wnck_window_get_window_type (win);
+
switch (wnck_type)
{
case WNCK_WINDOW_NORMAL:
return "normal";
case WNCK_WINDOW_DIALOG:
+ {
+ Atom actual;
+ int result, format;
+ unsigned long n, left;
+ unsigned char *data;
+ unsigned int state = 0;
+
+ result = XGetWindowProperty (gdk_x11_get_default_xdisplay (), wnck_window_get_xid (win),
+ net_wm_state_atom,
+ 0L, 1024L, FALSE, XA_ATOM, &actual, &format,
+ &n, &left, &data);
+
+ if (result == Success && data)
+ {
+ Atom *a = (Atom *) data;
+
+ while (n--)
+ if (*a++ == net_wm_state_modal_atom)
+ {
+ XFree ((void *) data);
+ return "modal_dialog";
+ }
+
+
+ }
+
return "dialog";
+ }
case WNCK_WINDOW_MENU:
return "menu";
case WNCK_WINDOW_UTILITY:
@@ -269,7 +298,7 @@ add_frame_window (WnckWindow *win,
d->active = wnck_window_is_active (win);
d->win = win;
- d->frame = gwd_get_decor_frame (get_frame_type (wnck_window_get_window_type (win)));
+ d->frame = gwd_get_decor_frame (get_frame_type (win));
d->last_pos_entered = NULL;
attr.event_mask = ButtonPressMask | EnterWindowMask |
diff --git a/images/freedesktop.png b/images/freedesktop.png
deleted file mode 100644
index 9d8b69d..0000000
Binary files a/images/freedesktop.png and /dev/null differ
diff --git a/plugins/cube/images/freedesktop.png b/plugins/cube/images/freedesktop.png
new file mode 100644
index 0000000..9d8b69d
Binary files /dev/null and b/plugins/cube/images/freedesktop.png differ
commit 50ba20346c5a28dac5522c4a2da54c62a46efb3e
Author: Sam Spilsbury <sam.spilsbury@canonical.com>
Date: Mon Feb 28 17:42:27 2011 +0800
Fix the loading and installation of images - core images should
be under the core plugin, freedesktop.png moved to cube
and load images based on the actual install dirs
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 943c30c..766e7cb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -40,7 +40,7 @@ else (COMPIZ_PACKAGING_ENABLED)
endif (COMPIZ_PACKAGING_ENABLED)
set (compiz_plugindir ${libdir}/compiz)
-set (compiz_imagedir ${datadir}/compiz/images)
+set (compiz_sharedir ${datadir}/compiz/)
set (compiz_metadatadir ${datadir}/compiz)
set (COMPIZ_I18N_DIR ${CMAKE_SOURCE_DIR}/po)
diff --git a/images/CMakeLists.txt b/images/CMakeLists.txt
index 77589a4..060b0d6 100644
--- a/images/CMakeLists.txt
+++ b/images/CMakeLists.txt
@@ -1,10 +1,9 @@
set (_images
icon.png
- freedesktop.png
)
install (
FILES ${_images}
- DESTINATION ${COMPIZ_DESTDIR}${compiz_imagedir}
+ DESTINATION ${COMPIZ_DESTDIR}${compiz_sharedir}
)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9b28deb..320b2f7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -17,7 +17,7 @@ include_directories (
add_definitions (
-DHAVE_CONFIG_H
-DPLUGINDIR=\\\"${compiz_plugindir}\\\"
- -DIMAGEDIR=\\\"${compiz_imagedir}\\\"
+ -DSHAREDIR=\\\"${compiz_sharedir}\\\"
-DMETADATADIR=\\\"${compiz_metadatadir}\\\"
)
diff --git a/src/screen.cpp b/src/screen.cpp
index 2c9c2e2..0068719 100644
--- a/src/screen.cpp
+++ b/src/screen.cpp
@@ -1061,7 +1061,8 @@ PrivateScreen::handleSelectionClear (XEvent *event)
shutDown = true;
}
-#define HOME_IMAGEDIR ".compiz-1/images"
+#define IMAGEDIR "images"
+#define HOMECOMPIZDIR ".compiz-1"
bool
CompScreen::readImageFromFile (CompString &name,
@@ -1081,10 +1082,12 @@ CompScreen::readImageFromFile (CompString &name,
{
path = home;
path += "/";
- path += HOME_IMAGEDIR;
+ path += HOMECOMPIZDIR;
path += "/";
path += pname;
path += "/";
+ path += IMAGEDIR;
+ path += "/";
path += name;
status = fileToImage (path, size, stride, data);
@@ -1093,10 +1096,12 @@ CompScreen::readImageFromFile (CompString &name,
return true;
}
- path = IMAGEDIR;
+ path = SHAREDIR;
path += "/";
path += pname;
path += "/";
+ path += IMAGEDIR;
+ path += "/";
path += name;
status = fileToImage (path, size, stride, data);
}
@@ -3862,7 +3867,7 @@ bool
CompScreen::updateDefaultIcon ()
{
CompString file = priv->optionGetDefaultIcon ();
- CompString pname = "";
+ CompString pname = "core/";
void *data;
CompSize size;
commit 7ab96635e185bf4360ce06395244eefe14c89fdc
Author: Sam Spilsbury <sam.spilsbury@canonical.com>
Date: Sun Feb 27 19:55:00 2011 +0800
Don't pass uninitialized value to plugins needing to update output extents
Plugins need to check against this value in order to see if they should
change the extents of the decoration area on windows, don't send them
uninitialized garbage when doing that.
diff --git a/src/window.cpp b/src/window.cpp
index fba90e3..05d8959 100644
--- a/src/window.cpp
+++ b/src/window.cpp
@@ -838,7 +838,7 @@ PrivateWindow::updateFrameWindow ()
void
CompWindow::updateWindowOutputExtents ()
{
- CompWindowExtents output;
+ CompWindowExtents output (priv->output);
getOutputExtents (output);
Reply to: