]> Dogcows Code - chaz/openbox/blobdiff - openbox/client.c
watch for windows with titlecounts changing their title and getting an incorrect...
[chaz/openbox] / openbox / client.c
index c8f006055b8022bd277fa96771d83b54fb854316..fe23f05df94f017af187122ac5a4da59b6f254f2 100644 (file)
@@ -660,6 +660,8 @@ static void client_get_all(ObClient *self)
     client_get_state(self);
     client_get_shaped(self);
 
+    g_message("self->iconic %d", self->iconic);
+
     client_get_mwm_hints(self);
     client_get_type(self);/* this can change the mwmhints for special cases */
 
@@ -749,10 +751,6 @@ static void client_get_state(ObClient *self)
     guint32 *state;
     guint num;
   
-    self->modal = self->shaded = self->max_horz = self->max_vert =
-       self->fullscreen = self->above = self->below = self->iconic =
-       self->skip_taskbar = self->skip_pager = FALSE;
-
     if (PROP_GETA32(self->window, net_wm_state, atom, &state, &num)) {
        gulong i;
        for (i = 0; i < num; ++i) {
@@ -1310,10 +1308,11 @@ void client_update_title(ObClient *self)
     GList *it;
     guint32 nums;
     guint i;
-    char *data = NULL;
+    gchar *data = NULL;
     gboolean read_title;
+    gchar *old_title;
 
-    g_free(self->title);
+    old_title = self->title;
      
     /* try netwm */
     if (!PROP_GETS(self->window, net_wm_name, utf8, &data))
@@ -1321,6 +1320,10 @@ void client_update_title(ObClient *self)
        if (!PROP_GETS(self->window, wm_name, locale, &data))
            data = g_strdup("Unnamed Window");
 
+    /* did the title change? then reset the title_count */
+    if (old_title && 0 != strncmp(old_title, data, strlen(data)))
+        self->title_count = 1;
+
     /* look for duplicates and append a number */
     nums = 0;
     for (it = client_list; it; it = it->next)
@@ -1338,12 +1341,10 @@ void client_update_title(ObClient *self)
         }
     /* dont display the number for the first window */
     if (self->title_count > 1) {
-        char *vdata, *ndata;
-        ndata = g_strdup_printf(" - [%u]", self->title_count);
-        vdata = g_strconcat(data, ndata, NULL);
-        g_free(ndata);
+        char *ndata;
+        ndata = g_strdup_printf("%s - [%u]", data, self->title_count);
         g_free(data);
-        data = vdata;
+        data = ndata;
     }
 
     PROP_SETS(self->window, net_wm_visible_name, data);
@@ -1353,6 +1354,8 @@ void client_update_title(ObClient *self)
     if (self->frame)
        frame_adjust_title(self->frame);
 
+    g_free(old_title);
+
     /* update the icon title */
     data = NULL;
     g_free(self->icon_title);
@@ -1712,6 +1715,7 @@ static void client_apply_startup_state(ObClient *self)
 {
     /* these are in a carefully crafted order.. */
 
+    g_message("self->iconic %d", self->iconic);
     if (self->iconic) {
        self->iconic = FALSE;
        client_iconify(self, TRUE, FALSE);
This page took 0.022427 seconds and 4 git commands to generate.