http://sourceforge.net/p/flwm/flwm/ci/3938480dc18b56a2eaf3cb9302b6ebfe6cb3064e/tree/Frame.C?diff=11e88c7fc9d5a2817425528742a425f85e7aa0a0 plus the removal of two pointers that don't exist in fltk-1.3.3 --- Frame.C.orig Sat Jun 27 19:04:40 2015 +++ Frame.C Sat Jun 27 19:08:51 2015 @@ -6,9 +6,7 @@ #include #include #include -#include "Rotated.H" - static Atom wm_state = 0; static Atom wm_change_state; static Atom wm_protocols; @@ -438,11 +436,6 @@ int Frame::force_y_onscreen(int Y, int H) { // The destructor is called on DestroyNotify, so I don't have to do anything // to the contained window, which is already been destroyed. -// fltk bug: it does not clear these pointers when window is deleted, -// causing flwm to crash on window close sometimes: -extern Fl_Window *fl_xfocus; -extern Fl_Window *fl_xmousewin; - Frame::~Frame() { // It is possible for the frame to be destroyed while the menu is @@ -455,8 +448,6 @@ Frame::~Frame() { #if FL_MAJOR_VERSION < 2 // fix fltk bug: - fl_xfocus = 0; - fl_xmousewin = 0; Fl::focus_ = 0; #endif @@ -1262,6 +1253,7 @@ void Frame::draw() { # endif #endif if (!flag(THIN_BORDER) && label_h > 3) { + fl_push_clip(1, label_y, left, label_h); #ifdef SHOW_CLOCK if (active()) { int clkw = int(fl_width(clock_buf)); @@ -1280,8 +1272,9 @@ void Frame::draw() { // and the window height is short enough. For now, we'll // assume this is not enough of a problem to be concerned // about. - draw_rotated90(clock_buf, 1, label_y+3, left-1, label_h-6, - Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_CLIP)); + fl_draw(90, clock_buf, + (left + fl_height() + 1)/2 - fl_descent(), + label_y+label_h-3); } else // Only show the clock on the active frame. XClearArea(fl_display, fl_xid(this), 1, label_y+3, @@ -1289,8 +1282,10 @@ void Frame::draw() { #endif fl_color(labelcolor()); fl_font(TITLE_FONT_SLOT, TITLE_FONT_SIZE); - draw_rotated90(label(), 1, label_y+3, left-1, label_h-3, - Fl_Align(FL_ALIGN_TOP|FL_ALIGN_CLIP)); + fl_draw(90, label(), + (left + fl_height() + 1)/2 - fl_descent(), + label_y+3+fl_width(label())); + fl_pop_clip(); } } }