]> Dogcows Code - chaz/openbox/blobdiff - openbox/popup.c
Correct a 64-bit bug in event_time_after
[chaz/openbox] / openbox / popup.c
index 071f5b62e2c5d9a40208170d40a27cb449a7450f..770f33d0ac73047d1a04d7f0b174a6892a766e02 100644 (file)
@@ -58,6 +58,7 @@ ObPopup *popup_new(void)
     XMapWindow(ob_display, self->text);
 
     stacking_add(INTERNAL_AS_WINDOW(self));
+    g_hash_table_insert(window_map, &self->bg, self);
     return self;
 }
 
@@ -68,6 +69,7 @@ void popup_free(ObPopup *self)
         XDestroyWindow(ob_display, self->text);
         RrAppearanceFree(self->a_bg);
         RrAppearanceFree(self->a_text);
+        g_hash_table_remove(window_map, &self->bg);
         stacking_remove(self);
         g_free(self);
     }
@@ -255,6 +257,8 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
     x=MAX(MIN(x, area->x+area->width-w),area->x);
     y=MAX(MIN(y, area->y+area->height-h),area->y);
 
+    g_free(area);
+
     if (m == screen_num_monitors) {
         RECT_SET(mon, x, y, w, h);
         m = screen_find_monitor(&mon);
@@ -264,6 +268,8 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
 
         x=MAX(MIN(x, area->x+area->width-w),area->x);
         y=MAX(MIN(y, area->y+area->height-h),area->y);
+
+        g_free(area);
     }
 
     /* set the windows/appearances up */
@@ -299,8 +305,6 @@ void popup_delay_show(ObPopup *self, gulong usec, gchar *text)
             popup_show_timeout(self);
         }
     }
-
-    g_free(area);
 }
 
 void popup_hide(ObPopup *self)
@@ -363,16 +367,17 @@ void icon_popup_free(ObIconPopup *self)
 }
 
 void icon_popup_delay_show(ObIconPopup *self, gulong usec,
-                           gchar *text, const ObClientIcon *icon)
+                           gchar *text, RrImage *icon)
 {
     if (icon) {
-        self->a_icon->texture[0].type = RR_TEXTURE_RGBA;
-        self->a_icon->texture[0].data.rgba.width = icon->width;
-        self->a_icon->texture[0].data.rgba.height = icon->height;
-        self->a_icon->texture[0].data.rgba.alpha = 0xff;
-        self->a_icon->texture[0].data.rgba.data = icon->data;
-    } else
+        RrAppearanceClearTextures(self->a_icon);
+        self->a_icon->texture[0].type = RR_TEXTURE_IMAGE;
+        self->a_icon->texture[0].data.image.alpha = 0xff;
+        self->a_icon->texture[0].data.image.image = icon;
+    } else {
+        RrAppearanceClearTextures(self->a_icon);
         self->a_icon->texture[0].type = RR_TEXTURE_NONE;
+    }
 
     popup_delay_show(self->popup, usec, text);
 }
This page took 0.024454 seconds and 4 git commands to generate.