X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.cc;h=4e098cb839d0f501c66ada6728806914b21054e5;hb=eccab56a6c06c9c2f5764d7913fd794961f60214;hp=4d1de42afbb9341b577e03b6e7ad25894b6db997;hpb=b9a7f6fbcbc1b3cef535091531bd05bbb9b385a1;p=chaz%2Fopenbox diff --git a/src/openbox.cc b/src/openbox.cc index 4d1de42a..4e098cb8 100644 --- a/src/openbox.cc +++ b/src/openbox.cc @@ -70,6 +70,7 @@ void Openbox::signalHandler(int signal) printf("Caught signal %d. Exiting.\n", signal); instance->shutdown(); break; + case SIGFPE: case SIGSEGV: printf("Caught signal %d. Aborting and dumping core.\n", signal); @@ -109,6 +110,7 @@ Openbox::Openbox(int argc, char **argv) action.sa_handler = Openbox::signalHandler; action.sa_mask = sigset_t(); action.sa_flags = SA_NOCLDSTOP | SA_NODEFER; + sigaction(SIGUSR1, &action, (struct sigaction *) 0); sigaction(SIGPIPE, &action, (struct sigaction *) 0); sigaction(SIGSEGV, &action, (struct sigaction *) 0); sigaction(SIGFPE, &action, (struct sigaction *) 0); @@ -357,6 +359,13 @@ void Openbox::setFocusedClient(OBClient *c) otk::OBProperty::Atom_Window, (c && _focused_screen == *it) ? c->window() : None); } + + // call the python Focus callbacks + EventData *data = new_event_data(_focused_screen->number(), + c ? c->window() : 0, + EventFocus, 0); + Openbox::instance->bindings()->fireEvent(data); + Py_XDECREF((PyObject*)data); } void Openbox::execute(int screen, const std::string &bin)