]> Dogcows Code - chaz/openbox/commitdiff
rm the focused member from the client struct, it was redundant with the focus_client...
authorDana Jansens <danakj@orodu.net>
Fri, 21 Mar 2003 08:18:39 +0000 (08:18 +0000)
committerDana Jansens <danakj@orodu.net>
Fri, 21 Mar 2003 08:18:39 +0000 (08:18 +0000)
engines/openbox/openbox.c
openbox/client.c
openbox/client.h
plugins/focus.c

index aa4c71ead35a1b34d13a26144dd0afd4ad73ebb7..c488efbaf4dbef8cd6e8a92591dec74df6dc9c36 100644 (file)
@@ -23,6 +23,9 @@
 
 #define PLATE_EVENTMASK (SubstructureRedirectMask | ButtonPressMask)
 #define FRAME_EVENTMASK (EnterWindowMask | LeaveWindowMask)
+#define ELEMENT_EVENTMASK (ButtonPressMask | ButtonReleaseMask | \
+                           ButtonMotionMask | ExposureMask | \
+                           EnterWindowMask | LeaveWindowMask)
 
 /* style settings - geometry */
 int s_bevel;
@@ -268,8 +271,7 @@ Frame *frame_new()
     self->frame.plate = createWindow(self->frame.window, mask, &attrib);
 
     mask = CWEventMask;
-    attrib.event_mask = (ButtonPressMask | ButtonReleaseMask |
-                        ButtonMotionMask | ExposureMask);
+    attrib.event_mask = ELEMENT_EVENTMASK;
     self->title = createWindow(self->frame.window, mask, &attrib);
     self->label = createWindow(self->title, mask, &attrib);
     self->max = createWindow(self->title, mask, &attrib);
@@ -729,7 +731,7 @@ static void layout_title(ObFrame *self)
 
 static void render(ObFrame *self)
 {
-    if (self->frame.client->focused) {
+    if (client_focused(self->frame.client)) {
         XSetWindowBorder(ob_display, self->frame.plate,
                          s_cb_focused_color->pixel);
     } else {
@@ -738,7 +740,7 @@ static void render(ObFrame *self)
     }
 
     if (self->frame.client->decorations & Decor_Titlebar) {
-        paint(self->title, (self->frame.client->focused ?
+        paint(self->title, (client_focused(self->frame.client) ?
                             self->a_focused_title :
                             self->a_unfocused_title),
               0, 0, self->width, TITLE_HEIGHT);
@@ -751,16 +753,16 @@ static void render(ObFrame *self)
     }
 
     if (self->frame.client->decorations & Decor_Handle) {
-        paint(self->handle, (self->frame.client->focused ?
+        paint(self->handle, (client_focused(self->frame.client) ?
                              self->a_focused_handle :
                              self->a_unfocused_handle),
               GRIP_WIDTH + self->bwidth, 0,
               HANDLE_WIDTH(self), s_handle_height);
-        paint(self->lgrip, (self->frame.client->focused ?
+        paint(self->lgrip, (client_focused(self->frame.client) ?
                             a_focused_grip :
                             a_unfocused_grip),
               0, 0, GRIP_WIDTH, s_handle_height);
-        paint(self->rgrip, (self->frame.client->focused ?
+        paint(self->rgrip, (client_focused(self->frame.client) ?
                             a_focused_grip :
                             a_unfocused_grip),
               0, 0, GRIP_WIDTH, s_handle_height);
@@ -773,7 +775,7 @@ static void render_label(ObFrame *self)
 
     if (self->label_x < 0) return;
 
-    a = (self->frame.client->focused ?
+    a = (client_focused(self->frame.client) ?
          self->a_focused_label : self->a_unfocused_label);
 
     /* set the texture's text! */
@@ -797,7 +799,7 @@ static void render_max(ObFrame *self)
     
     if (self->max_x < 0) return;
 
-    paint(self->max, (self->frame.client->focused ?
+    paint(self->max, (client_focused(self->frame.client) ?
                      (press ?
                       a_focused_pressed_max :
                       a_focused_unpressed_max) :
@@ -811,7 +813,7 @@ static void render_iconify(ObFrame *self)
 {
     if (self->iconify_x < 0) return;
 
-    paint(self->iconify, (self->frame.client->focused ?
+    paint(self->iconify, (client_focused(self->frame.client) ?
                          (self->iconify_press ?
                           a_focused_pressed_iconify :
                           a_focused_unpressed_iconify) :
@@ -828,7 +830,7 @@ static void render_desk(ObFrame *self)
     
     if (self->desk_x < 0) return;
 
-    paint(self->desk, (self->frame.client->focused ?
+    paint(self->desk, (client_focused(self->frame.client) ?
                       (press ?
                        a_focused_pressed_desk :
                        a_focused_unpressed_desk) :
@@ -842,7 +844,7 @@ static void render_close(ObFrame *self)
 {
     if (self->close_x < 0) return;
 
-    paint(self->close, (self->frame.client->focused ?
+    paint(self->close, (client_focused(self->frame.client) ?
                          (self->close_press ?
                           a_focused_pressed_close :
                           a_focused_unpressed_close) :
index 6f4dd16a48fae1a3559ea6792eb62c3b91da3898..7dbb4d0b81aa98ba91a0f49c1b79ccfe9fedb9aa 100644 (file)
@@ -276,7 +276,7 @@ void client_unmanage(Client *client)
 
     /* unfocus the client (dispatchs the focus event) (we're out of the
      transient lists already, so being modal doesn't matter) */
-    if (client->focused)
+    if (client_focused(client))
        client_unfocus(client);
 
     if (ob_state != State_Exiting) {
@@ -385,7 +385,6 @@ static void client_get_all(Client *self)
     self->title = self->icon_title = NULL;
     self->res_name = self->res_class = self->role = NULL;
     self->wmstate = NormalState;
-    self->focused = FALSE;
     self->transient = FALSE;
     self->transients = NULL;
     self->transient_for = NULL;
@@ -1171,7 +1170,7 @@ static Client *search_focus_tree(Client *node, Client *skip)
        Client *c = it->data;
        if (c == skip) continue; /* circular? */
        if ((ret = search_focus_tree(c, skip))) return ret;
-       if (c->focused) return c;
+       if (client_focused(c)) return c;
     }
     return NULL;
 }
@@ -1898,6 +1897,11 @@ gboolean client_focus(Client *self)
            return FALSE;
        }
     }
+
+    if (client_focused(self))
+        return TRUE;
+
+    g_print("Focusing: %lx\n", self->window);
      
     if (self->can_focus)
        XSetInputFocus(ob_display, self->window, RevertToNone, CurrentTime);
@@ -1917,12 +1921,18 @@ gboolean client_focus(Client *self)
        XSendEvent(ob_display, self->window, FALSE, NoEventMask, &ce);
     }
 
-    /*XSync(ob_display, FALSE); XXX Why sync? */
+    /* XSync(ob_display, FALSE); XXX Why sync? */
     return TRUE;
 }
 
 void client_unfocus(Client *self)
 {
     g_assert(focus_client == self);
+    g_print("UNFocusing: %lx\n", self->window);
     focus_set_client(NULL);
 }
+
+gboolean client_focused(Client *self)
+{
+    return self == focus_client;
+}
index c757332dd8a9266e39cc3732f89a1106bc2e24a5..6f303ffff689014fcaf0f3415715b26953adb9d0 100644 (file)
@@ -217,8 +217,6 @@ typedef struct Client {
     gboolean urgent;
     /*! Notify the window when it receives focus? */
     gboolean focus_notify;
-    /*! Does the client window have the input focus? */
-    gboolean focused;
 
     /*! The window uses shape extension to be non-rectangular? */
     gboolean shaped;
@@ -319,6 +317,9 @@ gboolean client_should_show(Client *self);
   to them in a number of places regarding focus or user interaction. */
 gboolean client_normal(Client *self);
 
+/* Returns if the window is focused */
+gboolean client_focused(Client *self);
+
 /*! Move and/or resize the window.
   This also maintains things like the client's minsize, and size increments.
   @param anchor The corner to keep in the same position when resizing.
index acad90569f1b422a428daac781a4d1a00392f4fe..96c386395f049fd67d1f1b685a8d7d27316324a0 100644 (file)
@@ -76,6 +76,7 @@ static void focus_fallback(gboolean switching_desks)
 
 static void events(ObEvent *e, void *foo)
 {
+    g_message("event %d", e->type);
     switch (e->type) {
     case Event_Client_Mapped:
         if (focus_new && client_normal(e->data.c.client))
@@ -85,7 +86,7 @@ static void events(ObEvent *e, void *foo)
     case Event_Client_Unmapped:
         if (ob_state == State_Exiting) break;
 
-        if (e->data.c.client->focused)
+        if (client_focused(e->data.c.client))
             if (!follow_mouse || !focus_under_pointer())
                 focus_fallback(FALSE);
         break;
@@ -110,8 +111,10 @@ static void events(ObEvent *e, void *foo)
             --skip_enter;
         }
         else*/
-        if (e->data.x.client != NULL && client_normal(e->data.x.client))
+        if (e->data.x.client != NULL && client_normal(e->data.x.client)) {
             client_focus(e->data.x.client);
+            g_message("enter %lx", e->data.x.client->window);
+        }
         break;
 
     default:
This page took 0.029782 seconds and 4 git commands to generate.