From 470b7e2729118087fc537e5a83550f366544a2ce Mon Sep 17 00:00:00 2001 From: kervala Date: Wed, 3 Nov 2010 20:47:01 +0100 Subject: [PATCH 1/9] Changed: #825 Remove all warning when compiling Ryzom --- code/ryzom/tools/stats_scan/user_char_filters.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/code/ryzom/tools/stats_scan/user_char_filters.cpp b/code/ryzom/tools/stats_scan/user_char_filters.cpp index 98b269900..a4af96753 100644 --- a/code/ryzom/tools/stats_scan/user_char_filters.cpp +++ b/code/ryzom/tools/stats_scan/user_char_filters.cpp @@ -22,6 +22,7 @@ #include "char_filter_factory.h" #include "character.h" +#include //------------------------------------------------------------------------------------------------- // namespaces From 16a086697dfbcb58b95cd9db4cb153c9aaee80fe Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 4 Nov 2010 19:27:35 +0100 Subject: [PATCH 2/9] Changed: #825 Remove all warning when compiling Ryzom --- code/nel/include/nel/net/module_builder_parts.h | 2 ++ code/ryzom/client/src/client_cfg.h | 1 + code/ryzom/client/src/interface_v3/group_map.h | 2 +- code/ryzom/client/src/interface_v3/view_pointer.cpp | 2 +- code/ryzom/client/src/r2/dmc/client_edition_module.cpp | 5 ++++- code/ryzom/client/src/r2/dmc/dmc.cpp | 8 ++++++++ code/ryzom/client/src/r2/editor.h | 3 +++ code/ryzom/common/src/game_share/object.h | 2 ++ 8 files changed, 22 insertions(+), 3 deletions(-) diff --git a/code/nel/include/nel/net/module_builder_parts.h b/code/nel/include/nel/net/module_builder_parts.h index 22b863abb..b080e521f 100644 --- a/code/nel/include/nel/net/module_builder_parts.h +++ b/code/nel/include/nel/net/module_builder_parts.h @@ -127,6 +127,8 @@ namespace NLNET class IModuleTrackerCb { public: + virtual ~IModuleTrackerCb() { } + virtual void onTrackedModuleUp(IModuleProxy *moduleProxy) =0; virtual void onTrackedModuleDown(IModuleProxy *moduleProxy) =0; }; diff --git a/code/ryzom/client/src/client_cfg.h b/code/ryzom/client/src/client_cfg.h index 048869cf6..44a195d05 100644 --- a/code/ryzom/client/src/client_cfg.h +++ b/code/ryzom/client/src/client_cfg.h @@ -801,6 +801,7 @@ struct CClientConfig public: /// Constructor. CClientConfig(); + virtual ~CClientConfig() {} static void setValues (); // Set the values of the ClientCfg instance static void setValuesOnFileChange (); // called when cfg modified diff --git a/code/ryzom/client/src/interface_v3/group_map.h b/code/ryzom/client/src/interface_v3/group_map.h index 9f88b2893..09974152d 100644 --- a/code/ryzom/client/src/interface_v3/group_map.h +++ b/code/ryzom/client/src/interface_v3/group_map.h @@ -107,7 +107,7 @@ public: }; public: CGroupMap(const TCtorParam ¶m); - ~CGroupMap(); + virtual ~CGroupMap(); // Add a decoration to the map. The map will call the 'onAdd' method. When this object is destroyed, it will call the 'onRemove' method void addDeco(IDeco *deco); // Remove a decoration from the map. This will also call the 'onRemove' method. It is up to the owner to delete it. diff --git a/code/ryzom/client/src/interface_v3/view_pointer.cpp b/code/ryzom/client/src/interface_v3/view_pointer.cpp index 2f70d382b..e6e6dcaa2 100644 --- a/code/ryzom/client/src/interface_v3/view_pointer.cpp +++ b/code/ryzom/client/src/interface_v3/view_pointer.cpp @@ -48,7 +48,7 @@ CViewPointer::CViewPointer (const TCtorParam ¶m) : CViewBase(param), _Buttons(NLMISC::noButton) { - _PointerX = _PointerY = _PointerOldX = _PointerOldY = 0; + _PointerX = _PointerY = _PointerOldX = _PointerOldY = _PointerDownX = _PointerDownY = 0; _PointerDown = false; _PointerVisible = true; _TxIdDefault = -2; diff --git a/code/ryzom/client/src/r2/dmc/client_edition_module.cpp b/code/ryzom/client/src/r2/dmc/client_edition_module.cpp index fc8ec2b51..4d10f45a4 100644 --- a/code/ryzom/client/src/r2/dmc/client_edition_module.cpp +++ b/code/ryzom/client/src/r2/dmc/client_edition_module.cpp @@ -1381,7 +1381,7 @@ bool CClientEditionModule::loadUserComponent(const std::string& filename, bool m } CHashKeyMD5 md5Id; - uint32 timeStamp; + uint32 timeStamp = 0; if (! compressed) { @@ -1572,6 +1572,9 @@ bool CClientEditionModule::loadUserComponent(const std::string& filename, bool m uncompressedFile[uncompressedFileLength] = '\0'; } + + // TODO: compute md5Id and timeStamp + _UserComponents[filename] = new CUserComponent(filename, uncompressedFile, uncompressedFileLength, compressedFile, compressedFileLength); _UserComponents[filename]->Md5Id = md5Id; _UserComponents[filename]->TimeStamp = timeStamp; diff --git a/code/ryzom/client/src/r2/dmc/dmc.cpp b/code/ryzom/client/src/r2/dmc/dmc.cpp index df18c12f8..5ea173477 100644 --- a/code/ryzom/client/src/r2/dmc/dmc.cpp +++ b/code/ryzom/client/src/r2/dmc/dmc.cpp @@ -556,6 +556,10 @@ void CDynamicMapClient::requestSetNode(const std::string& instanceId, const std: class CNotifySonDeletion : public CEditor::IObserverAction { public: + virtual ~CNotifySonDeletion() + { + } + CInstance &ErasedInstance; CNotifySonDeletion(CInstance &erasedInstance) : ErasedInstance(erasedInstance) {} virtual void doAction(CEditor::IInstanceObserver &obs) @@ -568,6 +572,10 @@ public: class CTraverseEraseRequestedSons : public IInstanceVisitor { public: + virtual ~CTraverseEraseRequestedSons() + { + } + virtual void visit(CInstance &inst) { CNotifySonDeletion notifySonDeletion(inst); diff --git a/code/ryzom/client/src/r2/editor.h b/code/ryzom/client/src/r2/editor.h index 27ca896ea..5aac2e786 100644 --- a/code/ryzom/client/src/r2/editor.h +++ b/code/ryzom/client/src/r2/editor.h @@ -376,6 +376,8 @@ public: struct IInstanceObserver : public NLMISC::CRefCount // refptr'ed observers { + virtual ~IInstanceObserver() {} + typedef NLMISC::CRefPtr TRefPtr; // called when the watched instance has been created virtual void onInstanceCreated(CInstance &/* instance */) {} @@ -970,6 +972,7 @@ public: // allowing for safe removal of observer when they are triggered struct IObserverAction { + virtual ~IObserverAction() { } virtual void doAction(IInstanceObserver &obs) = 0; }; void triggerInstanceObserver(const TInstanceId &id, IObserverAction &action); diff --git a/code/ryzom/common/src/game_share/object.h b/code/ryzom/common/src/game_share/object.h index 880728618..0f74d70fa 100644 --- a/code/ryzom/common/src/game_share/object.h +++ b/code/ryzom/common/src/game_share/object.h @@ -44,6 +44,8 @@ class CSerializeContext; // vistor triggered at traversal of object tree. see CObject::visit struct IObjectVisitor { + virtual ~IObjectVisitor() { } + virtual void visit(CObjectRefId &/* obj */) {} virtual void visit(CObjectString &/* obj */) {} virtual void visit(CObjectNumber &/* obj */) {} From 6f0fef6808ecb60ec79a84fdf74b5109bcf5fa24 Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 4 Nov 2010 19:35:44 +0100 Subject: [PATCH 3/9] Changed: #1034 Implement CCustomMouse for Linux --- .../3d/driver/direct3d/driver_direct3d.cpp | 5 - .../src/3d/driver/direct3d/driver_direct3d.h | 24 +-- .../direct3d/driver_direct3d_inputs.cpp | 74 +++---- code/nel/src/3d/driver/opengl/driver_opengl.h | 3 + .../3d/driver/opengl/driver_opengl_inputs.cpp | 191 +++++++++++++++--- .../3d/driver/opengl/driver_opengl_window.cpp | 148 +------------- .../interface_v3/input_handler_manager.cpp | 2 - 7 files changed, 216 insertions(+), 231 deletions(-) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp index febc34286..50c2f5c15 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp @@ -3932,9 +3932,4 @@ bool CDriverD3D::convertBitmapToIcon(const NLMISC::CBitmap &bitmap, HICON &icon, return true; } -bool CDriverD3D::convertBitmapToCursor(const NLMISC::CBitmap &bitmap, nlCursor &cursor, uint iconWidth, uint iconHeight, uint iconDepth, const NLMISC::CRGBA &col, sint hotSpotX, sint hotSpotY) -{ - return convertBitmapToIcon(bitmap, cursor, iconWidth, iconHeight, iconDepth, col, hotSpotX, hotSpotY, true); -} - } // NL3D diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.h b/code/nel/src/3d/driver/direct3d/driver_direct3d.h index 83e85dc1d..fae4d6dee 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.h +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.h @@ -2093,18 +2093,18 @@ private: // cursors enum TColorDepth { ColorDepth16 = 0, ColorDepth32, ColorDepthCount }; - TColorDepth _ColorDepth; - std::string _CurrName; - NLMISC::CRGBA _CurrCol; - uint8 _CurrRot; - uint _CurrHotSpotX; - uint _CurrHotSpotY; - float _CursorScale; - - nlCursor _DefaultCursor; - - bool _AlphaBlendedCursorSupported; - bool _AlphaBlendedCursorSupportRetrieved; + TColorDepth _ColorDepth; + std::string _CurrName; + NLMISC::CRGBA _CurrCol; + uint8 _CurrRot; + uint _CurrHotSpotX; + uint _CurrHotSpotY; + float _CursorScale; + + nlCursor _DefaultCursor; + + bool _AlphaBlendedCursorSupported; + bool _AlphaBlendedCursorSupportRetrieved; class CCursor { diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp index c2c456fcc..038ae5ea7 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp @@ -177,11 +177,8 @@ void CDriverD3D::addCursor(const std::string &name, const NLMISC::CBitmap &curso CCursor &curs = _Cursors[name]; curs = CCursor(); // erase possible previous cursor - uint destWidth; - uint destHeight; - - destWidth = GetSystemMetrics(SM_CXCURSOR); - destHeight = GetSystemMetrics(SM_CYCURSOR); + uint destWidth = GetSystemMetrics(SM_CXCURSOR); + uint destHeight = GetSystemMetrics(SM_CYCURSOR); // build a square bitmap uint tmpSize = std::max(maxX - minX + 1, maxY - minY + 1); @@ -198,9 +195,12 @@ void CDriverD3D::addCursor(const std::string &name, const NLMISC::CBitmap &curso // first resampling, same for all cursors tmpSize = (uint) (tmpSize * curs.HotspotScale); if (tmpSize == 0) tmpSize = 1; -/* - curs.Src.resample(tmpSize, tmpSize); -*/ + + if (curs.HotspotScale < 1.f) + { + curs.Src.resample(tmpSize, tmpSize); + } + // shrink if necessary if (tmpSize > destWidth || tmpSize > destHeight) // need to shrink ? { @@ -305,12 +305,8 @@ nlCursor CDriverD3D::buildCursor(const CBitmap &src, NLMISC::CRGBA col, uint8 ro { nlassert(isAlphaBlendedCursorSupported()); - uint mouseW; - uint mouseH; - - // use cursor size from system - mouseW = GetSystemMetrics(SM_CXCURSOR); - mouseH = GetSystemMetrics(SM_CYCURSOR); + uint mouseW = GetSystemMetrics(SM_CXCURSOR); + uint mouseH = GetSystemMetrics(SM_CYCURSOR); CBitmap rotSrc = src; if (rot > 3) rot = 3; // mimic behavior of 'CViewRenderer::drawRotFlipBitmapTiled' (why not rot & 3 ??? ...) @@ -374,6 +370,7 @@ void CDriverD3D::setMousePos(float x, float y) if (_HWnd == EmptyWindow) return; + // convert position size from float to pixels sint x1 = (sint)((float)_CurrentMode.Width*x); sint y1 = (sint)((float)_CurrentMode.Height*(1.0f-y)); @@ -385,6 +382,28 @@ void CDriverD3D::setMousePos(float x, float y) SetCursorPos(pt.x, pt.y); } +// *************************************************************************** +void CDriverD3D::setCapture (bool b) +{ + H_AUTO_D3D(CDriverD3D_setCapture); + + if (b && isSystemCursorInClientArea() && !isSystemCursorCaptured()) + { + SetCapture(_HWnd); + } + else if (!b && isSystemCursorCaptured()) + { + // if hardware mouse and not in client area, then force to update its aspect by updating its pos + if (!isSystemCursorInClientArea()) + { + // force update + showCursor(true); + } + + ReleaseCapture(); + } +} + // *************************************************************************** bool CDriverD3D::isSystemCursorInClientArea() { @@ -433,28 +452,6 @@ bool CDriverD3D::isSystemCursorInClientArea() return true; } -// *************************************************************************** -void CDriverD3D::setCapture (bool b) -{ - H_AUTO_D3D(CDriverD3D_setCapture); - - if (b && isSystemCursorInClientArea() && !isSystemCursorCaptured()) - { - SetCapture(_HWnd); - } - else if (!b && isSystemCursorCaptured()) - { - // if hardware mouse and not in client area, then force to update its aspect by updating its pos - if (!isSystemCursorInClientArea()) - { - // force update - showCursor(true); - } - - ReleaseCapture(); - } -} - // *************************************************************************** bool CDriverD3D::isSystemCursorCaptured() { @@ -578,4 +575,9 @@ uint CDriverD3D::getDoubleClickDelay(bool hardwareMouse) return res; } +bool CDriverD3D::convertBitmapToCursor(const NLMISC::CBitmap &bitmap, nlCursor &cursor, uint iconWidth, uint iconHeight, uint iconDepth, const NLMISC::CRGBA &col, sint hotSpotX, sint hotSpotY) +{ + return convertBitmapToIcon(bitmap, cursor, iconWidth, iconHeight, iconDepth, col, hotSpotX, hotSpotY, true); +} + } // NL3D diff --git a/code/nel/src/3d/driver/opengl/driver_opengl.h b/code/nel/src/3d/driver/opengl/driver_opengl.h index 8ab0b3f6a..9b4dcfb9e 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl.h +++ b/code/nel/src/3d/driver/opengl/driver_opengl.h @@ -1002,6 +1002,9 @@ private: // Convert a NLMISC::CBitmap to nlCursor bool convertBitmapToCursor(const NLMISC::CBitmap &bitmap, nlCursor &cursor, uint iconWidth, uint iconHeight, uint iconDepth, const NLMISC::CRGBA &col, sint hotSpotX, sint hotSpotY); + // Return the best cursor size depending on specified width and height + bool getBestCursorSize(uint srcWidth, uint srcHeight, uint &dstWidth, uint &dstHeight); + // build a cursor from src, src should have the same size that the hardware cursor // or a assertion is thrown nlCursor buildCursor(const NLMISC::CBitmap &src, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY); diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp index 70c2ce9d6..5af8a057a 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp @@ -205,20 +205,8 @@ void CDriverGL::addCursor(const std::string &name, const NLMISC::CBitmap &cursor CCursor &curs = _Cursors[name]; curs = CCursor(); // erase possible previous cursor - uint destWidth; - uint destHeight; - -#ifdef NL_OS_WINDOWS - - destWidth = GetSystemMetrics(SM_CXCURSOR); - destHeight = GetSystemMetrics(SM_CYCURSOR); - -#elif defined(NL_OS_MAC) -#elif defined(NL_OS_UNIX) - - Status res = XQueryBestCursor(_dpy, _win, width, height, &destWidth, &destHeight); - -#endif + uint destWidth = 32, destHeight = 32; + getBestCursorSize(width, height, destWidth, destHeight); // build a square bitmap uint tmpSize = std::max(maxX - minX + 1, maxY - minY + 1); @@ -384,22 +372,8 @@ nlCursor CDriverGL::buildCursor(const CBitmap &src, NLMISC::CRGBA col, uint8 rot { nlassert(isAlphaBlendedCursorSupported()); - uint mouseW; - uint mouseH; - -#ifdef NL_OS_WINDOWS - - // use cursor size from system - mouseW = GetSystemMetrics(SM_CXCURSOR); - mouseH = GetSystemMetrics(SM_CYCURSOR); - -#elif defined(NL_OS_MAC) -#elif defined(NL_OS_UNIX) - - // use best cursor size for bitmap - Status res = XQueryBestCursor(_dpy, _win, src.getWidth(), src.getHeight(), &mouseW, &mouseH); - -#endif + uint mouseW = 32, mouseH = 32; + getBestCursorSize(src.getWidth(), src.getHeight(), mouseW, mouseH); CBitmap rotSrc = src; if (rot > 3) rot = 3; // mimic behavior of 'CViewRenderer::drawRotFlipBitmapTiled' (why not rot & 3 ??? ...) @@ -811,4 +785,161 @@ uint CDriverGL::getDoubleClickDelay(bool hardwareMouse) return res; } +bool CDriverGL::getBestCursorSize(uint srcWidth, uint srcHeight, uint &dstWidth, uint &dstHeight) +{ +#ifdef NL_OS_WINDOWS + + // Windows provides default size for cursors + dstWidth = (uint)GetSystemMetrics(SM_CXCURSOR); + dstHeight = (uint)GetSystemMetrics(SM_CYCURSOR); + +#elif defined(NL_OS_MAC) +#elif defined(NL_OS_UNIX) + + Status res = XQueryBestCursor(_dpy, _win, srcWidth, srcHeight, &dstWidth, &dstHeight); + nlwarning("XQueryBestCursor returned %d", (sint)res); + +#endif + + return true; +} + +bool CDriverGL::convertBitmapToCursor(const NLMISC::CBitmap &bitmap, nlCursor &cursor, uint iconWidth, uint iconHeight, uint iconDepth, const NLMISC::CRGBA &col, sint hotSpotX, sint hotSpotY) +{ +#if defined(NL_OS_WINDOWS) + + return convertBitmapToIcon(bitmap, cursor, iconWidth, iconHeight, iconDepth, col, hotSpotX, hotSpotY, true); + +#elif defined(NL_OS_UNIX) && defined(HAVE_XRENDER) && !defined(NL_OS_MAC) + + CBitmap src = bitmap; + + // resample bitmap if necessary + if (src.getWidth() != iconWidth || src.getHeight() != iconHeight) + { + src.resample(iconWidth, iconHeight); + } + + CBitmap colorBm; + colorBm.resize(iconWidth, iconHeight, CBitmap::RGBA); + const CRGBA *srcColorPtr = (CRGBA *) &(src.getPixels()[0]); + const CRGBA *srcColorPtrLast = srcColorPtr + (iconWidth * iconHeight); + CRGBA *destColorPtr = (CRGBA *) &(colorBm.getPixels()[0]); + + do + { + // colorize icon + destColorPtr->modulateFromColor(*srcColorPtr, col); + + // X11 wants BGRA pixels : swap red and blue channels + std::swap(destColorPtr->R, destColorPtr->B); + + // premultiplied alpha + if (destColorPtr->A < 255) + { + destColorPtr->R = (destColorPtr->R * destColorPtr->A) / 255; + destColorPtr->G = (destColorPtr->G * destColorPtr->A) / 255; + destColorPtr->B = (destColorPtr->B * destColorPtr->A) / 255; + } + + ++ srcColorPtr; + ++ destColorPtr; + } + while (srcColorPtr != srcColorPtrLast); + + // use malloc() because X will free() data itself + CRGBA *src32 = (CRGBA*)malloc(colorBm.getSize()*4); + memcpy(src32, &colorBm.getPixels(0)[0], colorBm.getSize()*4); + + uint size = iconWidth * iconHeight; + + // Create the icon pixmap + sint screen = DefaultScreen(_dpy); + Visual *visual = DefaultVisual(_dpy, screen); + + if (!visual) + { + nlwarning("Failed to get a default visual for screen %d", screen); + return false; + } + + // create the icon pixmap + XImage* image = XCreateImage(_dpy, visual, 32, ZPixmap, 0, (char*)src32, iconWidth, iconHeight, 32, 0); + + if (!image) + { + nlwarning("Failed to set the window's icon"); + return false; + } + + Pixmap pixmap = XCreatePixmap(_dpy, _win, iconWidth, iconHeight, 32 /* defDepth */); + + if (!pixmap) + { + nlwarning("Failed to create a pixmap %ux%ux%d", iconWidth, iconHeight, 32); + return false; + } + + GC gc = XCreateGC(_dpy, pixmap, 0, NULL); + + if (!gc) + { + nlwarning("Failed to create a GC"); + return false; + } + + sint res = XPutImage(_dpy, pixmap, gc, image, 0, 0, 0, 0, iconWidth, iconHeight); + // should return 0 + nlwarning("XPutImage returned %d", res); + + res = XFreeGC(_dpy, gc); + // should return 1 + nlwarning("XFreeGC returned %d", res); + + if (image->data) + { + free(image->data); + image->data = NULL; + } + + XDestroyImage(image); + + XRenderPictFormat *format = XRenderFindStandardFormat(_dpy, PictStandardARGB32); + + if (!format) + { + nlwarning("Failed to find a standard format"); + return false; + } + + Picture picture = XRenderCreatePicture(_dpy, pixmap, format, 0, 0); + + if (!picture) + { + nlwarning("Failed to create picture"); + return false; + } + + cursor = XRenderCreateCursor(_dpy, picture, (uint)hotSpotX, (uint)hotSpotY); + + if (!cursor) + { + nlwarning("Failed to create cursor"); + return false; + } + + XRenderFreePicture(_dpy, picture); + res = XFreePixmap(_dpy, pixmap); + // should return 1 + nlwarning("XFreePixmap returned %d", res); + + return true; + +#else + + return false; + +#endif +} + } // NL3D diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp index e340520ca..68cd0a5b5 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_window.cpp @@ -2646,7 +2646,7 @@ bool CDriverGL::convertBitmapToIcon(const NLMISC::CBitmap &bitmap, HICON &icon, const CRGBA *srcColorPtr = (CRGBA *) &(src.getPixels()[0]); const CRGBA *srcColorPtrLast = srcColorPtr + (iconWidth * iconHeight); CRGBA *destColorPtr = (CRGBA *) &(colorBm.getPixels()[0]); - static volatile uint8 alphaThreshold = 127; + static uint8 alphaThreshold = 127; do { destColorPtr->modulateFromColor(*srcColorPtr, col); @@ -2674,7 +2674,7 @@ bool CDriverGL::convertBitmapToIcon(const NLMISC::CBitmap &bitmap, HICON &icon, for (uint k = 0;k < colorBm16.size(); ++k) { - if (src32[k].A <= 120) + if (src32[k].A <= alphaThreshold) { bitMask[k / 8] |= (0x80 >> (k & 7)); } @@ -2707,18 +2707,8 @@ bool CDriverGL::convertBitmapToIcon(const NLMISC::CBitmap &bitmap, HICON &icon, return true; } -bool CDriverGL::convertBitmapToCursor(const NLMISC::CBitmap &bitmap, nlCursor &cursor, uint iconWidth, uint iconHeight, uint iconDepth, const NLMISC::CRGBA &col, sint hotSpotX, sint hotSpotY) -{ - return convertBitmapToIcon(bitmap, cursor, iconWidth, iconHeight, iconDepth, col, hotSpotX, hotSpotY, true); -} - #elif defined(NL_OS_MAC) -bool CDriverGL::convertBitmapToCursor(const NLMISC::CBitmap &bitmap, nlCursor &cursor, uint iconWidth, uint iconHeight, uint iconDepth, const NLMISC::CRGBA &col, sint hotSpotX, sint hotSpotY) -{ - return false; -} - #elif defined(NL_OS_UNIX) bool CDriverGL::convertBitmapToIcon(const NLMISC::CBitmap &bitmap, std::vector &icon) @@ -2745,140 +2735,6 @@ bool CDriverGL::convertBitmapToIcon(const NLMISC::CBitmap &bitmap, std::vectormodulateFromColor(*srcColorPtr, col); - - // X11 wants BGRA pixels : swap red and blue channels - std::swap(destColorPtr->R, destColorPtr->B); - - // premultiplied alpha - if (destColorPtr->A < 255) - { - destColorPtr->R = (destColorPtr->R * destColorPtr->A) / 255; - destColorPtr->G = (destColorPtr->G * destColorPtr->A) / 255; - destColorPtr->B = (destColorPtr->B * destColorPtr->A) / 255; - } - - ++ srcColorPtr; - ++ destColorPtr; - } - while (srcColorPtr != srcColorPtrLast); - - // use malloc() because X will free() data itself - CRGBA *src32 = (CRGBA*)malloc(colorBm.getSize()*4); - memcpy(src32, &colorBm.getPixels(0)[0], colorBm.getSize()*4); - - uint size = iconWidth * iconHeight; - - // Create the icon pixmap - sint screen = DefaultScreen(_dpy); - Visual *visual = DefaultVisual(_dpy, screen); - - if (!visual) - { - nlwarning("Failed to get a default visual for screen %d", screen); - return false; - } - - // create the icon pixmap - XImage* image = XCreateImage(_dpy, visual, 32, ZPixmap, 0, (char*)src32, iconWidth, iconHeight, 32, 0); - - if (!image) - { - nlwarning("Failed to set the window's icon"); - return false; - } - - Pixmap pixmap = XCreatePixmap(_dpy, _win, iconWidth, iconHeight, 32 /* defDepth */); - - if (!pixmap) - { - nlwarning("Failed to create a pixmap %ux%ux%d", iconWidth, iconHeight, 32); - return false; - } - - GC gc = XCreateGC(_dpy, pixmap, 0, NULL); - - if (!gc) - { - nlwarning("Failed to create a GC"); - return false; - } - - sint res = XPutImage(_dpy, pixmap, gc, image, 0, 0, 0, 0, iconWidth, iconHeight); - // should return 0 - nlwarning("XPutImage returned %d", res); - - res = XFreeGC(_dpy, gc); - // should return 1 - nlwarning("XFreeGC returned %d", res); - - if (image->data) - { - free(image->data); - image->data = NULL; - } - - XDestroyImage(image); - - XRenderPictFormat *format = XRenderFindStandardFormat(_dpy, PictStandardARGB32); - - if (!format) - { - nlwarning("Failed to find a standard format"); - return false; - } - - Picture picture = XRenderCreatePicture(_dpy, pixmap, format, 0, 0); - - if (!picture) - { - nlwarning("Failed to create picture"); - return false; - } - - cursor = XRenderCreateCursor(_dpy, picture, (uint)hotSpotX, (uint)hotSpotY); - - if (!cursor) - { - nlwarning("Failed to create cursor"); - return false; - } - - XRenderFreePicture(_dpy, picture); - res = XFreePixmap(_dpy, pixmap); - // should return 1 - nlwarning("XFreePixmap returned %d", res); - - return true; - -#else - - return false; - -#endif -} - #endif } // NL3D diff --git a/code/ryzom/client/src/interface_v3/input_handler_manager.cpp b/code/ryzom/client/src/interface_v3/input_handler_manager.cpp index 12efeed5a..90adc44a3 100644 --- a/code/ryzom/client/src/interface_v3/input_handler_manager.cpp +++ b/code/ryzom/client/src/interface_v3/input_handler_manager.cpp @@ -64,7 +64,6 @@ CInputHandlerManager::CInputHandlerManager() _MouseButtonsState = noButton; _MouseX = _MouseY = _MouseLastX = _MouseLastY = 0; _Focus = true; - // Driver->setFocus(true); _MouseWheel = 0; _SkipInterfaceManager=false; _RecoverFocusLost = false; @@ -184,7 +183,6 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event) _RecoverFocusLost = true; // force to update mouse pos on next click or move Driver->showCursor(IsMouseCursorHardware()); _Focus = true; - // Driver->setFocus(true); } if(!_SkipInterfaceManager) From b4436933347b6044b611157de593571e8d23ebe1 Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 4 Nov 2010 22:14:47 +0100 Subject: [PATCH 4/9] Fixed: #1034 Implement CCustomMouse for Linux --- code/nel/src/3d/driver/direct3d/driver_direct3d.cpp | 2 +- code/nel/src/3d/driver/direct3d/driver_direct3d.h | 5 +++-- code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp | 6 ++++++ code/nel/src/3d/driver/opengl/driver_opengl.cpp | 2 +- code/nel/src/3d/driver/opengl/driver_opengl.h | 5 +++-- code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp | 6 ++++++ code/nel/src/3d/driver_user.cpp | 7 +++++++ .../client/src/interface_v3/input_handler_manager.cpp | 1 - code/ryzom/client/src/interface_v3/view_renderer.cpp | 2 +- 9 files changed, 28 insertions(+), 8 deletions(-) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp index 50c2f5c15..8388651c8 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp @@ -173,7 +173,7 @@ CDriverD3D::CDriverD3D() _CurrRot = 0; _CurrHotSpotX = 0; _CurrHotSpotY = 0; - _CursorScale = 0.85f; + _CursorScale = 1.f; _UserViewMtx.identity(); _UserModelMtx.identity(); diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.h b/code/nel/src/3d/driver/direct3d/driver_direct3d.h index fae4d6dee..5f2857de1 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.h +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.h @@ -923,14 +923,15 @@ public: // see if system cursor is currently captured virtual bool isSystemCursorCaptured(); - virtual void setHardwareCursorScale(float scale) { _CursorScale = scale; } - // Add a new cursor (name is case unsensitive) virtual void addCursor(const std::string &name, const NLMISC::CBitmap &bitmap); // Display a cursor from its name (case unsensitive) virtual void setCursor(const std::string &name, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY, bool forceRebuild = false); + // Change default scale for all cursors + virtual void setCursorScale(float scale); + virtual NLMISC::IMouseDevice *enableLowLevelMouse(bool enable, bool exclusive); virtual NLMISC::IKeyboardDevice *enableLowLevelKeyboard(bool enable); virtual NLMISC::IInputDeviceManager *getLowLevelInputDeviceManager(); diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp index 038ae5ea7..e64585ad7 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d_inputs.cpp @@ -300,6 +300,12 @@ void CDriverD3D::setCursor(const std::string &name, NLMISC::CRGBA col, uint8 rot } +// ************************************************************************************* +void CDriverD3D::setCursorScale(float scale) +{ + _CursorScale = scale; +} + // ************************************************************************************* nlCursor CDriverD3D::buildCursor(const CBitmap &src, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY) { diff --git a/code/nel/src/3d/driver/opengl/driver_opengl.cpp b/code/nel/src/3d/driver/opengl/driver_opengl.cpp index cf9a911da..38a6c3cff 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl.cpp @@ -223,7 +223,7 @@ CDriverGL::CDriverGL() _CurrRot = 0; _CurrHotSpotX = 0; _CurrHotSpotY = 0; - _CursorScale = 0.85f; + _CursorScale = 1.f; _MouseCaptured = false; _NeedToRestaureGammaRamp = false; diff --git a/code/nel/src/3d/driver/opengl/driver_opengl.h b/code/nel/src/3d/driver/opengl/driver_opengl.h index 9b4dcfb9e..56f6198dc 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl.h +++ b/code/nel/src/3d/driver/opengl/driver_opengl.h @@ -523,14 +523,15 @@ public: // see if system cursor is currently captured virtual bool isSystemCursorCaptured(); - virtual void setHardwareCursorScale(float scale) { _CursorScale = scale; } - // Add a new cursor (name is case unsensitive) virtual void addCursor(const std::string &name, const NLMISC::CBitmap &bitmap); // Display a cursor from its name (case unsensitive) virtual void setCursor(const std::string &name, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY, bool forceRebuild = false); + // Change default scale for all cursors + virtual void setCursorScale(float scale); + virtual NLMISC::IMouseDevice *enableLowLevelMouse(bool enable, bool exclusive); virtual NLMISC::IKeyboardDevice *enableLowLevelKeyboard(bool enable); diff --git a/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp b/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp index 5af8a057a..7dd9363d1 100644 --- a/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp +++ b/code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp @@ -367,6 +367,12 @@ void CDriverGL::setCursor(const std::string &name, NLMISC::CRGBA col, uint8 rot, } +// ************************************************************************************* +void CDriverGL::setCursorScale(float scale) +{ + _CursorScale = scale; +} + // ************************************************************************************* nlCursor CDriverGL::buildCursor(const CBitmap &src, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY) { diff --git a/code/nel/src/3d/driver_user.cpp b/code/nel/src/3d/driver_user.cpp index b26a4b951..6d2bdcb53 100644 --- a/code/nel/src/3d/driver_user.cpp +++ b/code/nel/src/3d/driver_user.cpp @@ -1664,6 +1664,13 @@ void CDriverUser::setCursor(const std::string &name, NLMISC::CRGBA col, uint8 _Driver->setCursor(name, col, rot, hotSpotX, hotSpotY, forceRebuild); } +void CDriverUser::setCursorScale(float scale) +{ + NL3D_HAUTO_UI_DRIVER; + + _Driver->setCursorScale(scale); +} + // *************************************************************************** // *************************************************************************** // Async Texture loading mgt diff --git a/code/ryzom/client/src/interface_v3/input_handler_manager.cpp b/code/ryzom/client/src/interface_v3/input_handler_manager.cpp index 90adc44a3..ef235ce60 100644 --- a/code/ryzom/client/src/interface_v3/input_handler_manager.cpp +++ b/code/ryzom/client/src/interface_v3/input_handler_manager.cpp @@ -157,7 +157,6 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event) _MouseButtonsReleased = noButton; _MouseButtonsState = noButton; _Focus = false; - // Driver->setFocus(false); if (!_SkipInterfaceManager) { diff --git a/code/ryzom/client/src/interface_v3/view_renderer.cpp b/code/ryzom/client/src/interface_v3/view_renderer.cpp index 35443d14c..6a300275e 100644 --- a/code/ryzom/client/src/interface_v3/view_renderer.cpp +++ b/code/ryzom/client/src/interface_v3/view_renderer.cpp @@ -729,7 +729,7 @@ void CViewRenderer::loadTextures (const std::string &textureFileName, const std: _GlobalTextures.push_back (gt); -// Driver->setHardwareCursorScale(ClientCfg.HardwareCursorScale); + Driver->setCursorScale(ClientCfg.HardwareCursorScale); char bufTmp[256], tgaName[256]; string sTGAname; From a3212b2a906fb7e354f6dbd727751f117bc6457a Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 4 Nov 2010 22:19:57 +0100 Subject: [PATCH 5/9] Changed: Implement getZBuffer for Direct3D driver --- .../3d/driver/direct3d/driver_direct3d.cpp | 90 ++++++++++++------- .../src/3d/driver/direct3d/driver_direct3d.h | 5 +- 2 files changed, 62 insertions(+), 33 deletions(-) diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp index 8388651c8..098e7d1df 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp @@ -3763,51 +3763,81 @@ bool CDriverD3D::clipRect(NLMISC::CRect &rect) return rect.Width>0 && rect.Height>0; } -void CDriverD3D::getZBufferPart (std::vector &/* zbuffer */, NLMISC::CRect &/* rect */) +void CDriverD3D::getZBuffer(std::vector &zbuffer) +{ + H_AUTO_D3D(CDriverD3D_getZBuffer); + + CRect rect(0, 0); + getWindowSize(rect.Width, rect.Height); + getZBufferPart(zbuffer, rect); +} + +void CDriverD3D::getZBufferPart (std::vector &zbuffer, NLMISC::CRect &rect) { -/* ace: currently not working zbuffer.clear(); - if(clipRect(rect)) + IDirect3DSurface9 *surface; + if (SUCCEEDED(_DeviceInterface->GetDepthStencilSurface(&surface))) { - IDirect3DSurface9 *surface; - if(_DeviceInterface->GetDepthStencilSurface(&surface)== D3D_OK) + if (clipRect(rect)) { - // Surface desc - D3DSURFACE_DESC desc; - if (surface->GetDesc(&desc) == D3D_OK) + RECT winRect; + winRect.left = rect.left(); + winRect.right = rect.right(); + winRect.top = rect.top(); + winRect.bottom = rect.bottom(); + + // Lock the surface + D3DLOCKED_RECT lock; + if (SUCCEEDED(surface->LockRect (&lock, &winRect, D3DLOCK_READONLY))) { - // 32 bits format supported - if (desc.Format == D3DFMT_D24S8) + zbuffer.resize(rect.Width*rect.Height); + + // Surface desc + D3DSURFACE_DESC desc; + if (SUCCEEDED(surface->GetDesc(&desc))) { - // Lock the surface - D3DLOCKED_RECT lock; - ::RECT winRect; - winRect.left = rect.left(); - winRect.right = rect.right(); - winRect.top = rect.top(); - winRect.bottom = rect.bottom(); - const uint lineCount = rect.Height; - const uint width = rect.Width; - HRESULT hr = surface->LockRect (&lock, &winRect, D3DLOCK_READONLY); - if (hr == D3D_OK) + const uint8* pBits = (uint8*)lock.pBits; + + for(uint y=0; y::max(); + } + } + else if (desc.Format == D3DFMT_D16_LOCKABLE) + { + uint16* pRow = (uint16*)(pBits + lock.Pitch * y); + while(offset != end) + { + uint16 value = *pRow++; + zbuffer[offset++] = (float)value / (float)std::numeric_limits::max(); + } } - surface->UnlockRect (); } } + + surface->UnlockRect (); } - surface->Release(); } + + surface->Release(); } -*/ } diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.h b/code/nel/src/3d/driver/direct3d/driver_direct3d.h index 5f2857de1..f17531520 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.h +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.h @@ -822,9 +822,8 @@ public: virtual void setDepthRange(float znear, float zfar); virtual void getDepthRange(float &znear, float &zfar) const; - // todo hulud d3d buffers - virtual void getZBuffer (std::vector &/* zbuffer */) {} - virtual void getBufferPart (CBitmap &bitmap, NLMISC::CRect &rect); // Only 32 bits back buffer supported + virtual void getZBuffer (std::vector &zbuffer); + virtual void getBufferPart (CBitmap &bitmap, NLMISC::CRect &rect); // return true if driver support Bloom effect. virtual bool supportBloomEffect() const; From 78984475bb0e37e45acc56eebdc3bfa35c273399 Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 4 Nov 2010 22:21:04 +0100 Subject: [PATCH 6/9] Fixed: #1034 Implement CCustomMouse for Linux --- code/nel/include/nel/3d/driver.h | 3 +++ code/nel/include/nel/3d/driver_user.h | 2 ++ code/nel/include/nel/3d/u_driver.h | 3 +++ 3 files changed, 8 insertions(+) diff --git a/code/nel/include/nel/3d/driver.h b/code/nel/include/nel/3d/driver.h index 51ea013c3..40367e8ad 100644 --- a/code/nel/include/nel/3d/driver.h +++ b/code/nel/include/nel/3d/driver.h @@ -755,6 +755,9 @@ public: // Display a cursor from its name (case unsensitive) virtual void setCursor(const std::string &name, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY, bool forceRebuild = false) = 0; + // Change default scale for all cursors + virtual void setCursorScale(float scale) = 0; + /** Check whether there is a low level device manager available, and get its interface. Return NULL if not available * From this interface you can deal with mouse and keyboard as above, but you can also manage game device (joysticks, joypads ...) */ diff --git a/code/nel/include/nel/3d/driver_user.h b/code/nel/include/nel/3d/driver_user.h index bb21b01a6..81016186f 100644 --- a/code/nel/include/nel/3d/driver_user.h +++ b/code/nel/include/nel/3d/driver_user.h @@ -440,6 +440,8 @@ public: // Display a cursor from its name (case unsensitive) virtual void setCursor(const std::string &name, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY, bool forceRebuild = false); + // Change default scale for all cursors + virtual void setCursorScale(float scale); // @} diff --git a/code/nel/include/nel/3d/u_driver.h b/code/nel/include/nel/3d/u_driver.h index 173ac4b9e..3c120737d 100644 --- a/code/nel/include/nel/3d/u_driver.h +++ b/code/nel/include/nel/3d/u_driver.h @@ -604,6 +604,9 @@ public: // Display a cursor from its name (case unsensitive) virtual void setCursor(const std::string &name, NLMISC::CRGBA col, uint8 rot, sint hotSpotX, sint hotSpotY, bool forceRebuild = false) = 0; + // Change default scale for all cursors + virtual void setCursorScale(float scale) = 0; + // @} /// \name Misc. From f9d13d61fcad9bae12a2bb06053e4d07f4dea4cd Mon Sep 17 00:00:00 2001 From: kervala Date: Thu, 4 Nov 2010 22:22:29 +0100 Subject: [PATCH 7/9] Changed: #878 Fix typos in comments/code --- code/nel/include/nel/3d/driver.h | 1 - code/nel/src/3d/driver/direct3d/driver_direct3d.cpp | 1 + code/nel/src/3d/driver/opengl/driver_opengl_inputs.cpp | 8 +++++--- .../ryzom/client/src/interface_v3/action_handler_misc.cpp | 2 -- .../client/src/interface_v3/input_handler_manager.cpp | 2 +- code/ryzom/client/src/r2/dmc/client_edition_module.cpp | 4 ---- 6 files changed, 7 insertions(+), 11 deletions(-) diff --git a/code/nel/include/nel/3d/driver.h b/code/nel/include/nel/3d/driver.h index 40367e8ad..aced27f92 100644 --- a/code/nel/include/nel/3d/driver.h +++ b/code/nel/include/nel/3d/driver.h @@ -762,7 +762,6 @@ public: * From this interface you can deal with mouse and keyboard as above, but you can also manage game device (joysticks, joypads ...) */ virtual NLMISC::IInputDeviceManager *getLowLevelInputDeviceManager() = 0; - // @} /// Get the width and the height of the window diff --git a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp index 098e7d1df..5a9aa051b 100644 --- a/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp +++ b/code/nel/src/3d/driver/direct3d/driver_direct3d.cpp @@ -2722,6 +2722,7 @@ bool CDriverD3D::fillPresentParameter (D3DPRESENT_PARAMETERS ¶meters, D3DFOR D3DFMT_D24FS8, //D3DFMT_D16, }; + const uint zbufferFormatCount = sizeof(zbufferFormats)/sizeof(D3DFORMAT); uint i; for (i=0; iGet) { - // Disactive all keys + // Deactivate all keys _MouseButtonsDown = noButton; _MouseButtonsReleased = noButton; _MouseButtonsState = noButton; diff --git a/code/ryzom/client/src/r2/dmc/client_edition_module.cpp b/code/ryzom/client/src/r2/dmc/client_edition_module.cpp index 4d10f45a4..b9f2aee4c 100644 --- a/code/ryzom/client/src/r2/dmc/client_edition_module.cpp +++ b/code/ryzom/client/src/r2/dmc/client_edition_module.cpp @@ -1384,7 +1384,6 @@ bool CClientEditionModule::loadUserComponent(const std::string& filename, bool m uint32 timeStamp = 0; if (! compressed) { - FILE* file = fopen(filename.c_str(),"rb"); if (!file) { @@ -1488,9 +1487,6 @@ bool CClientEditionModule::loadUserComponent(const std::string& filename, bool m uncompressedFile = new uint8[ data.size() ]; memcpy(uncompressedFile, data.c_str(), data.size()); uncompressedFileLength = (uint32)data.size(); - - - } else { From c464a2fab95aeb6a38c37b7c5de0f29008326fb4 Mon Sep 17 00:00:00 2001 From: kervala Date: Fri, 5 Nov 2010 09:45:24 +0100 Subject: [PATCH 8/9] Changed: #1135 Merge changes from Ryzom patch 1.10 --- .../data/gamedev/interfaces_v3/config.xml | 6 ++ .../gamedev/interfaces_v3/game_config.xml | 35 ++++++++- code/ryzom/client/src/client_chat_manager.cpp | 20 +++-- code/ryzom/client/src/client_chat_manager.h | 2 +- code/ryzom/client/src/commands.cpp | 12 ++- code/ryzom/client/src/cursor_functions.cpp | 10 ++- .../src/interface_v3/action_handler_help.cpp | 14 +++- .../client/src/interface_v3/chat_filter.cpp | 2 +- .../client/src/interface_v3/chat_window.cpp | 71 ++++++++++++++++-- .../interface_v3/filtered_chat_summary.cpp | 10 ++- .../src/interface_v3/filtered_chat_summary.h | 1 + .../client/src/interface_v3/group_html.cpp | 75 +++++++++---------- .../client/src/interface_v3/group_html.h | 5 +- .../src/interface_v3/interface_manager.cpp | 10 +-- .../ryzom/client/src/interface_v3/lua_ihm.cpp | 18 +++++ code/ryzom/client/src/interface_v3/lua_ihm.h | 1 + .../src/interface_v3/people_interraction.cpp | 47 ++++++++++-- code/ryzom/client/src/net_manager.cpp | 8 +- 18 files changed, 267 insertions(+), 80 deletions(-) diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/config.xml b/code/ryzom/client/data/gamedev/interfaces_v3/config.xml index 88306afc5..e1b5be456 100644 --- a/code/ryzom/client/data/gamedev/interfaces_v3/config.xml +++ b/code/ryzom/client/data/gamedev/interfaces_v3/config.xml @@ -2960,12 +2960,18 @@ This MUST follow the Enum MISSION_DESC::TIconId + + diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/game_config.xml b/code/ryzom/client/data/gamedev/interfaces_v3/game_config.xml index f15f3adc9..bd4b7ed40 100644 --- a/code/ryzom/client/data/gamedev/interfaces_v3/game_config.xml +++ b/code/ryzom/client/data/gamedev/interfaces_v3/game_config.xml @@ -1605,14 +1605,23 @@ posparent="cc_univ" x="0" y="-4" /> + + y="-8" /> + + +