From 65a46e5efc3cb5f7200b059e83b4c1c249e284bf Mon Sep 17 00:00:00 2001 From: cxl Date: Sun, 4 Sep 2011 14:57:06 +0000 Subject: [PATCH] *ide, CtrlCore: fixed crashing of assist popup on mouse click git-svn-id: svn://ultimatepp.org/upp/trunk@3814 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/X11Wnd.cpp | 15 ++++++++++----- uppsrc/ide/Assist.cpp | 1 + 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/uppsrc/CtrlCore/X11Wnd.cpp b/uppsrc/CtrlCore/X11Wnd.cpp index 4882394d3..a949638d5 100644 --- a/uppsrc/CtrlCore/X11Wnd.cpp +++ b/uppsrc/CtrlCore/X11Wnd.cpp @@ -861,7 +861,7 @@ void Ctrl::KillFocus(Window window) if(q < 0) return; XWindow& w = Xwindow()[q]; - if(w.ctrl) + if(w.ctrl) w.ctrl->KillFocusWnd(); } @@ -873,10 +873,13 @@ void Ctrl::SetWndFocus0(bool *b) if(top && top->window != focusWindow && IsEnabled() && IsVisible()) { LLOG("Setting focus... "); LTIMING("XSetInfputFocus"); + Ptr _this = this; KillFocus(focusWindow); - XSetInputFocus(Xdisplay, top->window, RevertToParent, CurrentTime); - focusWindow = top->window; - SetFocusWnd(); + if(_this && top) { + XSetInputFocus(Xdisplay, top->window, RevertToParent, CurrentTime); + focusWindow = top->window; + SetFocusWnd(); + } *b = true; } } @@ -1003,8 +1006,10 @@ void Ctrl::SetWndForeground0() w->last_active->SetWndForeground(); } else { + Ptr _this = this; SetWndFocus(); - XRaiseWindow(Xdisplay, top->window); + if(_this && top) + XRaiseWindow(Xdisplay, top->window); } } diff --git a/uppsrc/ide/Assist.cpp b/uppsrc/ide/Assist.cpp index 3692672e5..0589e9c4c 100644 --- a/uppsrc/ide/Assist.cpp +++ b/uppsrc/ide/Assist.cpp @@ -23,6 +23,7 @@ AssistEditor::AssistEditor() assist.NoHeader(); assist.NoGrid(); assist.AddColumn().Margin(0).SetDisplay(Single()); + assist.NoWantFocus(); assist.WhenLeftClick = THISBACK(AssistInsert); type.NoHeader(); type.NoGrid();