summaryrefslogtreecommitdiff
path: root/src/events.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/events.c')
-rw-r--r--src/events.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/src/events.c b/src/events.c
index f6ff1bb..7a482d3 100644
--- a/src/events.c
+++ b/src/events.c
@@ -229,22 +229,23 @@ handle_property_notify(event_t * ev)
D_EVENTS(("handle_property_notify(ev [0x%08x] on window 0x%08x)\n", ev, ev->xany.window));
- if (((Options & Opt_pixmapTrans) || (images[image_bg].mode & MODE_TRANS)) && (desktop_window != None)) {
+ if (background_is_trans()) {
if (ev->xany.window == TermWin.parent) {
prop = XInternAtom(Xdisplay, "_WIN_WORKSPACE", True);
if ((prop == None) || (ev->xproperty.atom != prop)) {
return 0;
}
XSelectInput(Xdisplay, desktop_window, None);
- desktop_window = get_desktop_window();
- XSelectInput(Xdisplay, desktop_window, PropertyChangeMask);
if (desktop_pixmap != None) {
free_desktop_pixmap();
}
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
- scrollbar_show(0);
-
+ desktop_window = get_desktop_window();
+ if (desktop_window == None) {
+ FOREACH_IMAGE(if (image_mode_is(idx, MODE_TRANS)) {image_set_mode(idx, MODE_IMAGE); image_allow_mode(idx, ALLOW_IMAGE);});
+ return 1;
+ }
+ XSelectInput(Xdisplay, desktop_window, PropertyChangeMask);
+ redraw_all_images();
} else if (ev->xany.window == desktop_window) {
prop = XInternAtom(Xdisplay, "_XROOTPMAP_ID", True);
if ((prop == None) || (ev->xproperty.atom != prop)) {
@@ -253,9 +254,7 @@ handle_property_notify(event_t * ev)
if (desktop_pixmap != None) {
free_desktop_pixmap();
}
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
- scrollbar_show(0);
+ redraw_all_images();
}
}
return 1;
@@ -345,10 +344,9 @@ handle_focus_in(event_t * ev)
REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0);
if (!TermWin.focus) {
TermWin.focus = 1;
- if (background_is_pixmap() && (images[image_bg].norm != images[image_bg].selected)) {
+ if (images[image_bg].norm != images[image_bg].selected) {
images[image_bg].current = images[image_bg].selected;
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
+ redraw_image(image_bg);
}
if (Options & Opt_scrollbar_popup) {
map_scrollbar(Options & Opt_scrollBar);
@@ -370,10 +368,9 @@ handle_focus_out(event_t * ev)
REQUIRE_RVAL(XEVENT_IS_MYWIN(ev, &primary_data), 0);
if (TermWin.focus) {
TermWin.focus = 0;
- if (background_is_pixmap() && (images[image_bg].norm != images[image_bg].selected)) {
+ if (images[image_bg].norm != images[image_bg].selected) {
images[image_bg].current = images[image_bg].norm;
- render_simage(images[image_bg].current, TermWin.vt, TermWin_TotalWidth(), TermWin_TotalHeight(), image_bg, 1);
- scr_touch();
+ redraw_image(image_bg);
}
if (Options & Opt_scrollbar_popup) {
map_scrollbar(0);
@@ -400,7 +397,7 @@ handle_configure_notify(event_t * ev)
#ifdef USE_XIM
xim_set_status_position();
#endif
- return 1;
+ return 0;
}
unsigned char