summaryrefslogtreecommitdiff
path: root/src/frame.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/frame.c')
-rw-r--r--src/frame.c100
1 files changed, 93 insertions, 7 deletions
diff --git a/src/frame.c b/src/frame.c
index f4f81892..03b96e15 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -33,15 +33,17 @@
#include <X11/extensions/Xrender.h>
#endif
+#ifdef MPX
#define EVENT_MASK (SubstructureRedirectMask | \
StructureNotifyMask | SubstructureNotifyMask | \
ExposureMask | \
- ButtonPressMask | ButtonReleaseMask | \
- PointerMotionMask | PointerMotionHintMask | \
- EnterWindowMask | LeaveWindowMask | \
- FocusChangeMask | \
+/* PointerMotionMask | PointerMotionHintMask |*/ \
+/* EnterWindowMask | LeaveWindowMask | */ \
+/* FocusChangeMask | */ \
ColormapChangeMask)
+#endif
+
void
meta_window_ensure_frame (MetaWindow *window)
{
@@ -97,9 +99,11 @@ meta_window_ensure_frame (MetaWindow *window)
visual = window->xvisual;
else
visual = NULL;
-
+
+#ifdef MPX
frame->xwindow = meta_ui_create_frame_window (window->screen->ui,
window->display->xdisplay,
+ window->display->devices,
visual,
frame->rect.x,
frame->rect.y,
@@ -107,10 +111,89 @@ meta_window_ensure_frame (MetaWindow *window)
frame->rect.height,
frame->window->screen->number);
+#endif
+
meta_verbose ("Frame for %s is 0x%lx\n", frame->window->desc, frame->xwindow);
attrs.event_mask = EVENT_MASK;
XChangeWindowAttributes (window->display->xdisplay,
frame->xwindow, CWEventMask, &attrs);
+#ifdef MPX
+ meta_warning("vo pega os eventos...\n");
+
+ XEventClass *evclasses;
+ int nclasses = 0;
+ int idev;
+
+ evclasses = g_new(XEventClass,
+ window->display->devices->miceUsed * 6 +
+ window->display->devices->keybsUsed * 2);
+// meta_warning("window->display->devices->miceUsed = %d\n",
+// window->display->devices->miceUsed);
+ for (idev = 0; idev < window->display->devices->miceUsed; idev++)
+ {
+// meta_warning("nclasses == %d\n", nclasses);
+ DeviceButtonPress (window->display->devices->mice[idev].xdev,
+ window->display->dev_btn_press_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_btn_press_type = %d\n", window->display->dev_btn_press_type);
+// meta_warning("nclasses == %d\n", nclasses);
+ DeviceButtonRelease (window->display->devices->mice[idev].xdev,
+ window->display->dev_btn_release_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_btn_release_type = %d\n", window->display->dev_btn_release_type);
+// meta_warning("nclasses == %d\n", nclasses);
+ DeviceMotionNotify (window->display->devices->mice[idev].xdev,
+ window->display->dev_motion_notify_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_motion_notify_type = %d\n", window->display->dev_motion_notify_type);
+// meta_warning("nclasses == %d\n", nclasses);
+ DevicePointerMotionHint (window->display->devices->mice[idev].xdev,
+ window->display->dev_ptr_motion_hint_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_ptr_motion_hint_type = %d\n", window->display->dev_ptr_motion_hint_type);
+// meta_warning("nclasses == %d\n", nclasses);
+ DeviceEnterNotify (window->display->devices->mice[idev].xdev,
+ window->display->dev_enter_notify_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_enter_notify_type = %d\n", window->display->dev_enter_notify_type);
+// meta_warning("nclasses == %d\n", nclasses);
+ DeviceLeaveNotify (window->display->devices->mice[idev].xdev,
+ window->display->dev_leave_notify_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_leave_notify_type = %d\n", window->display->dev_leave_notify_type);
+// meta_warning("nclasses == %d\n", nclasses);
+
+ }
+ /* XXX Should these be called with the keybs as arguments? */
+ for (idev = 0; idev < window->display->devices->miceUsed; idev++)
+ {
+ DeviceFocusIn (window->display->devices->keyboards[idev].xdev,
+ window->display->dev_focus_in_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_focus_in_type = %d\n", window->display->dev_focus_in_type);
+// meta_warning("nclasses == %d\n", nclasses);
+ DeviceFocusOut (window->display->devices->keyboards[idev].xdev,
+ window->display->dev_focus_out_type,
+ evclasses[nclasses]);
+ nclasses++;
+ meta_warning("window->display->dev_focus_out_type = %d\n", window->display->dev_focus_out_type);
+
+ }
+
+// meta_warning("nclasses == %d\n", nclasses);
+ XSelectExtensionEvent(window->display->xdisplay, frame->xwindow,
+ evclasses, nclasses);
+ meta_warning("selected the events! stored them in display 0x%x\n", window->display);
+
+ /* g_free(evclasses); XXX */
+#endif
meta_display_register_x_window (window->display, &frame->xwindow, window);
@@ -158,7 +241,8 @@ meta_window_ensure_frame (MetaWindow *window)
window->title);
/* Move keybindings to frame instead of window */
- meta_window_grab_keys (window);
+ for (idev = 0; idev < window->display->devices->keybsUsed; idev++)
+ meta_window_grab_keys (window, &window->display->devices->keyboards[idev]);
/* Shape mask */
meta_ui_apply_frame_shape (frame->window->screen->ui,
@@ -175,6 +259,7 @@ void
meta_window_destroy_frame (MetaWindow *window)
{
MetaFrame *frame;
+ int idev;
if (window->frame == NULL)
return;
@@ -218,7 +303,8 @@ meta_window_destroy_frame (MetaWindow *window)
window->frame = NULL;
/* Move keybindings to window instead of frame */
- meta_window_grab_keys (window);
+ for (idev = 0; idev < window->display->devices->keybsUsed; idev++)
+ meta_window_grab_keys (window, &window->display->devices->keyboards[idev]);
g_free (frame);