Update of /cvsroot/perl-win32-gui/Win32-GUI
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv30502
Modified Files:
GUI_Options.cpp
Log Message:
Rework Tooltip Class
Index: GUI_Options.cpp
===================================================================
RCS file: /cvsroot/perl-win32-gui/Win32-GUI/GUI_Options.cpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -C2 -d -r1.15 -r1.16
*** GUI_Options.cpp 23 Jun 2006 18:35:33 -0000 1.15
--- GUI_Options.cpp 3 Aug 2006 22:20:19 -0000 1.16
***************
*** 740,743 ****
--- 740,745 ----
char * option;
+ ti->uFlags |= TTF_IDISHWND;
+ ti->uFlags |= TTF_SUBCLASS;
next_i = -1;
for(i = from_i; i < items; i++) {
***************
*** 746,750 ****
if(strcmp(option, "-text") == 0) {
next_i = i + 1;
! ti->lpszText = SvPV_nolen(ST(next_i));
} else if(strcmp(option, "-needtext") == 0) {
next_i = i + 1;
--- 748,755 ----
if(strcmp(option, "-text") == 0) {
next_i = i + 1;
! if(SvPOK(ST(next_i)))
! ti->lpszText = SvPV_nolen(ST(next_i));
! else if (SvIOK(ST(next_i)))
! ti->lpszText = MAKEINTRESOURCE((WORD)SvIV(ST(next_i)));
} else if(strcmp(option, "-needtext") == 0) {
next_i = i + 1;
***************
*** 752,757 ****
} else if(strcmp(option, "-window") == 0) {
next_i = i + 1;
! ti->uId = (UINT) handle_From(NOTXSCALL ST(next_i));
! ti->uFlags |= TTF_IDISHWND;
} else if(strcmp(option, "-id") == 0) {
next_i = i + 1;
--- 757,761 ----
} else if(strcmp(option, "-window") == 0) {
next_i = i + 1;
! ti->hwnd = (HWND) handle_From(NOTXSCALL ST(next_i));
} else if(strcmp(option, "-id") == 0) {
next_i = i + 1;
***************
*** 782,785 ****
--- 786,790 ----
next_i = i + 1;
SwitchBit(ti->uFlags, TTF_TRACK , SvIV(ST(next_i)));
+ ti->uFlags &= ~TTF_SUBCLASS;
} else if(strcmp(option, "-transparent") == 0) {
next_i = i + 1;
***************
*** 803,806 ****
--- 808,834 ----
}
}
+
+ if( ti->uFlags & TTF_IDISHWND) {
+ ti->uId = (UINT)ti->hwnd; /* TODO: can hwnd be NULL? */
+ } else {
+ /* if rect not supplied, use hwnd co-ordinates */
+ if(ti->rect.left == 0 && ti->rect.right == 0 && ti->rect.top == 0 && ti->rect.bottom == 0) {
+ GetWindowRect(ti->hwnd, &(ti->rect));
+ }
+ }
+
+ /* If we're not a top level window, then we
+ * need our container flag set in order to process
+ * WM_NOTIFY messages correctly (see CustomMsgLoop)
+ * Needed for NeedText, Pop and Show events
+ */
+ HWND parent = GetAncestor(ti->hwnd, GA_PARENT);
+ if(parent) {
+ LPPERLWIN32GUI_USERDATA ud;
+ ud = (LPPERLWIN32GUI_USERDATA) GetWindowLong(ti->hwnd, GWL_USERDATA);
+ if( ValidUserData(ud) ) {
+ ud->dwPlStyle |= PERLWIN32GUI_CONTAINER;
+ }
+ }
}
|