summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann <sandmann@redhat.com>2006-05-24 20:38:56 +0000
committerSøren Sandmann Pedersen <ssp@src.gnome.org>2006-05-24 20:38:56 +0000
commit7535f0f58a5a7385eff41453629a3e2e004c6ff0 (patch)
tree3124d2159260649993c8ba635435b0b562385e3a
parentca3236f76c9fc211a3d8d3a20fcce3fca3bfe166 (diff)
downloadmetacity-7535f0f58a5a7385eff41453629a3e2e004c6ff0.tar.gz
New function
Wed May 24 16:37:11 2006 Søren Sandmann <sandmann@redhat.com> * src/c-window.c (private_metacity_window): New function * src/c-window.c (meta_comp_window_refresh_attrs): Map metacity's own windows directly.
-rw-r--r--ChangeLog11
-rw-r--r--src/c-screen.c2
-rw-r--r--src/c-window.c35
-rw-r--r--src/c-window.h2
4 files changed, 34 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 378fa1be..184b4891 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Wed May 24 16:37:11 2006 Søren Sandmann <sandmann@redhat.com>
+
+ * src/c-window.c (private_metacity_window): New function
+
+ * src/c-window.c (meta_comp_window_refresh_attrs): Map metacity's
+ own windows directly.
+
+Wed May 24 16:35:54 2006 Søren Sandmann <sandmann@redhat.com>
+
+ * src/c-window.c (private_metacity_window):
+
Wed May 24 14:36:42 2006 Søren Sandmann <sandmann@redhat.com>
* src/c-window.c (meta_comp_window_{freeze,thaw}_stack: Add a
diff --git a/src/c-screen.c b/src/c-screen.c
index ab5a9e7d..585cb28e 100644
--- a/src/c-screen.c
+++ b/src/c-screen.c
@@ -537,7 +537,7 @@ meta_comp_screen_add_window (MetaCompScreen *info,
goto out;
}
- comp_window = meta_comp_window_new (info->meta_screen->display, drawable);
+ comp_window = meta_comp_window_new (info->meta_screen, drawable);
g_hash_table_insert (info->windows_by_xid, (gpointer)WS_RESOURCE_XID (drawable), comp_window);
diff --git a/src/c-window.c b/src/c-window.c
index 872ae938..d56c3982 100644
--- a/src/c-window.c
+++ b/src/c-window.c
@@ -33,10 +33,12 @@
#include "effects.h"
#include "c-window.h"
#include "window.h"
+#include "frame.h"
struct _MetaCompWindow
{
MetaDisplay *display;
+ MetaScreen *screen;
WsDrawable *drawable;
WsPixmap *pixmap;
CmNode *node;
@@ -197,16 +199,18 @@ meta_comp_window_hide (MetaCompWindow *comp_window)
}
MetaCompWindow *
-meta_comp_window_new (MetaDisplay *display,
+meta_comp_window_new (MetaScreen *screen,
WsDrawable *drawable)
{
+ MetaDisplay *display = screen->display;
MetaCompWindow *window;
WsRectangle geometry;
ws_drawable_query_geometry (drawable, &geometry);
window = g_new0 (MetaCompWindow, 1);
-
+
+ window->screen = screen;
window->display = display;
window->drawable = g_object_ref (drawable);
window->node = CM_NODE (cm_drawable_node_new (drawable, &geometry));
@@ -371,15 +375,25 @@ find_client_window (MetaCompWindow *comp_window)
}
static gboolean
+private_metacity_window (MetaCompWindow *comp_window)
+{
+ /* Returns TRUE if this is a private metacity window
+ * such as a tooltip or a menu
+ */
+ XID xid = WS_RESOURCE_XID (comp_window->drawable);
+
+ return meta_ui_window_is_widget (comp_window->screen->ui, xid);
+}
+
+static gboolean
frameless_managed (MetaCompWindow *comp_window)
{
/* For some reason frameless, managed windows don't respond to
* sync requests messages. FIXME: at some point need to find out
* what's going on
*/
-
MetaWindow *mw = find_meta_window (comp_window);
-
+
return mw && !mw->frame;
}
@@ -497,19 +511,12 @@ meta_comp_window_refresh_attrs (MetaCompWindow *comp_window)
* sync counter stuff. FIXME: this should be figured out at
* some point.
*/
- if (frameless_managed (comp_window) || !send_sync_request (comp_window))
+ if (frameless_managed (comp_window) ||
+ private_metacity_window (comp_window) ||
+ !send_sync_request (comp_window))
{
-#if 0
- g_print ("directly showing %p\n", comp_window);
-#endif
meta_comp_window_show (comp_window);
}
- else
- {
-#if 0
- g_print ("for %p waiting for alarm\n", comp_window);
-#endif
- }
}
}
else
diff --git a/src/c-window.h b/src/c-window.h
index aaf23494..9c356989 100644
--- a/src/c-window.h
+++ b/src/c-window.h
@@ -26,7 +26,7 @@
typedef struct _MetaCompWindow MetaCompWindow;
-MetaCompWindow *meta_comp_window_new (MetaDisplay *display,
+MetaCompWindow *meta_comp_window_new (MetaScreen *screen,
WsDrawable *drawable);
CmNode *meta_comp_window_get_node (MetaCompWindow *window);
gboolean meta_comp_window_free (MetaCompWindow *window);