diff -c IV-3.1/iv/src/lib/IV-X11/xwindow.c:1.4 IV-3.1/iv/src/lib/IV-X11/xwindow.c:1.5 *** IV-3.1/iv/src/lib/IV-X11/xwindow.c:1.4 Tue Apr 20 16:06:53 1993 --- IV-3.1/iv/src/lib/IV-X11/xwindow.c Tue Apr 20 16:06:53 1993 *************** *** 90,97 **** w->xwindow_ = WindowRep::unbound; w->xattrmask_ = 0; w->xclass_ = InputOutput; - w->placed_ = false; - w->aligned_ = false; w->clear_mapping_info(); w->cursor_ = defaultCursor; w->cursor_stack_ = new WindowCursorStack; --- 90,95 ---- *************** *** 136,147 **** void Window::style(Style* s) { WindowRep& w = *rep(); ! if (w.style_ != s) { ! Resource::ref(s); ! Resource::unref(w.style_); ! w.style_ = s; ! w.check_binding(this); ! } } Style* Window::style() const { --- 134,143 ---- void Window::style(Style* s) { WindowRep& w = *rep(); ! Resource::ref(s); ! Resource::unref(w.style_); ! w.style_ = s; ! w.check_binding(this); } Style* Window::style() const { *************** *** 151,161 **** void Window::display(Display* d) { WindowRep& w = *rep(); ! if (w.display_ != d) { ! w.check_binding(this); ! w.display_ = d; ! w.canvas_->rep()->display_ = d; ! } } Display* Window::display() const { --- 147,155 ---- void Window::display(Display* d) { WindowRep& w = *rep(); ! w.check_binding(this); ! w.display_ = d; ! w.canvas_->rep()->display_ = d; } Display* Window::display() const { *************** *** 170,188 **** void Window::cursor(Cursor* c) { WindowRep& w = *rep(); ! if (w.cursor_ != c) { ! w.check_binding(this); ! w.cursor_ = c; ! XWindow xw = w.xwindow_; ! if (xw != WindowRep::unbound) { ! XDisplay* dpy = w.dpy(); ! if (c == nil) { ! XUndefineCursor(dpy, xw); ! } else { ! XDefineCursor(dpy, xw, c->rep()->xid(w.display_, w.visual_)); ! } ! XFlush(dpy); } } } --- 164,180 ---- void Window::cursor(Cursor* c) { WindowRep& w = *rep(); ! w.check_binding(this); ! w.cursor_ = c; ! XWindow xw = w.xwindow_; ! if (xw != WindowRep::unbound) { ! XDisplay* dpy = w.dpy(); ! if (c == nil) { ! XUndefineCursor(dpy, xw); ! } else { ! XDefineCursor(dpy, xw, c->rep()->xid(w.display_, w.visual_)); } + XFlush(dpy); } } *************** *** 263,273 **** if (w.map_pending_ || is_mapped()) { return; } - w.unmapped_ = false; if (bound()) { w.display_->rep()->wtable_->insert(w.xwindow_, this); } else { - unbind(); if (w.display_ == nil) { display(Session::instance()->default_display()); } --- 255,264 ---- if (w.map_pending_ || is_mapped()) { return; } if (bound()) { + w.unmapped_ = false; w.display_->rep()->wtable_->insert(w.xwindow_, this); } else { if (w.display_ == nil) { display(Session::instance()->default_display()); } *************** *** 349,357 **** WindowRep& w = *rep(); if (w.xwindow_ != WindowRep::unbound) { DisplayRep& d = *w.display_->rep(); - if (this == w.toplevel_) { - return true; - } if (w.find(w.xtoplevel_, d.wtable_) == w.toplevel_) { return true; } --- 340,345 ---- *************** *** 646,655 **** } ManagedWindow::~ManagedWindow() { ! ManagedWindowRep* w = rep_; ! Resource::unref(w->icon_bitmap_); ! Resource::unref(w->icon_mask_); ! delete w; } ManagedWindow* ManagedWindow::icon() const { return rep()->icon_; } --- 634,640 ---- } ManagedWindow::~ManagedWindow() { ! delete rep_; } ManagedWindow* ManagedWindow::icon() const { return rep()->icon_; } *************** *** 664,679 **** void ManagedWindow::icon_bitmap(Bitmap* b) { ManagedWindowRep& w = *rep(); - Resource::ref(b); - Resource::unref(w.icon_bitmap_); w.icon_bitmap_ = b; w.do_set(this, &ManagedWindowRep::set_icon_bitmap); } void ManagedWindow::icon_mask(Bitmap* b) { ManagedWindowRep& w = *rep(); - Resource::ref(b); - Resource::unref(w.icon_mask_); w.icon_mask_ = b; w.do_set(this, &ManagedWindowRep::set_icon_mask); } --- 649,660 ---- *************** *** 914,919 **** --- 895,902 ---- xtoplevel_ = WindowRep::unbound; needs_resize_ = false; resized_ = false; + placed_ = false; + aligned_ = false; moved_ = false; unmapped_ = false; wm_mapped_ = false; *************** *** 1785,1796 **** Display::~Display() { DisplayRep* d = rep(); Resource::unref_deferred(d->style_); for (ListItr(SelectionList) i(*d->selections_); i.more(); i.next()) { SelectionManager* s = i.cur(); delete s; } delete d->selections_; - delete d->damaged_; delete d->grabbers_; delete d->wtable_; delete d; --- 1768,1779 ---- Display::~Display() { DisplayRep* d = rep(); Resource::unref_deferred(d->style_); + delete d->damaged_; for (ListItr(SelectionList) i(*d->selections_); i.more(); i.next()) { SelectionManager* s = i.cur(); delete s; } delete d->selections_; delete d->grabbers_; delete d->wtable_; delete d; diff -c IV-3.1/iv/src/lib/NLS/locale.c:1.2 IV-3.1/iv/src/lib/NLS/locale.c:1.3 *** IV-3.1/iv/src/lib/NLS/locale.c:1.2 Tue Apr 20 16:06:59 1993 --- IV-3.1/iv/src/lib/NLS/locale.c Tue Apr 20 16:06:59 1993 *************** *** 92,103 **** } } } ! if (!table_->find(rep_, locale)) { ! LocaleRep* rep = new LocaleRep(); rep->name_ = new UniqueString(locale); table_->insert(*rep->name_, rep); - rep_ = rep; } } Locale::Locale (const Locale& locale) { --- 92,104 ---- } } } ! LocaleRep* rep; ! if (!table_->find(rep, locale)) { ! rep = new LocaleRep(); rep->name_ = new UniqueString(locale); table_->insert(*rep->name_, rep); } + rep_ = rep; } Locale::Locale (const Locale& locale) {