From d4f43d5bd7df83d29023a68f127510e992d72b65 Mon Sep 17 00:00:00 2001 From: cxl Date: Mon, 23 Feb 2015 09:54:33 +0000 Subject: [PATCH] CtrlLib: Oxygen KDE theme fixed #779 git-svn-id: svn://ultimatepp.org/upp/trunk@8194 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Core/Core.h | 21 --------------------- uppsrc/Core/heap.cpp | 17 +++++++++++++++++ uppsrc/CtrlLib/AmbientCtrls.iml | 13 +++++++++++++ uppsrc/CtrlLib/ChGtk.cpp | 18 +++++++++++++++--- uppsrc/CtrlLib/ChGtk0.cpp | 6 ++++++ uppsrc/CtrlLib/CtrlLib.upp | 1 + uppsrc/Updater/Updater.upp | 2 +- 7 files changed, 53 insertions(+), 25 deletions(-) create mode 100644 uppsrc/CtrlLib/AmbientCtrls.iml diff --git a/uppsrc/Core/Core.h b/uppsrc/Core/Core.h index a4ae16bda..f3b841e72 100644 --- a/uppsrc/Core/Core.h +++ b/uppsrc/Core/Core.h @@ -245,27 +245,6 @@ NAMESPACE_UPP #include -END_UPP_NAMESPACE - -#ifdef UPP_HEAP -#include - -inline void *operator new(size_t size) throw(std::bad_alloc) { void *ptr = UPP::MemoryAlloc(size); return ptr; } -inline void operator delete(void *ptr) throw() { UPP::MemoryFree(ptr); } - -inline void *operator new[](size_t size) throw(std::bad_alloc) { void *ptr = UPP::MemoryAlloc(size); return ptr; } -inline void operator delete[](void *ptr) throw() { UPP::MemoryFree(ptr); } - -inline void *operator new(size_t size, const std::nothrow_t&) throw() { void *ptr = UPP::MemoryAlloc(size); return ptr; } -inline void operator delete(void *ptr, const std::nothrow_t&) throw() { UPP::MemoryFree(ptr); } - -inline void *operator new[](size_t size, const std::nothrow_t&) throw() { void *ptr = UPP::MemoryAlloc(size); return ptr; } -inline void operator delete[](void *ptr, const std::nothrow_t&) throw() { UPP::MemoryFree(ptr); } - -#endif - -NAMESPACE_UPP - class XmlIO; class JsonIO; diff --git a/uppsrc/Core/heap.cpp b/uppsrc/Core/heap.cpp index 8b4257589..5cffd9db5 100644 --- a/uppsrc/Core/heap.cpp +++ b/uppsrc/Core/heap.cpp @@ -278,3 +278,20 @@ void MemoryCheck() #endif END_UPP_NAMESPACE + +#ifdef UPP_HEAP +#include + +void *operator new(size_t size) throw(std::bad_alloc) { void *ptr = UPP::MemoryAlloc(size); return ptr; } +void operator delete(void *ptr) throw() { UPP::MemoryFree(ptr); } + +void *operator new[](size_t size) throw(std::bad_alloc) { void *ptr = UPP::MemoryAlloc(size); return ptr; } +void operator delete[](void *ptr) throw() { UPP::MemoryFree(ptr); } + +void *operator new(size_t size, const std::nothrow_t&) throw() { void *ptr = UPP::MemoryAlloc(size); return ptr; } +void operator delete(void *ptr, const std::nothrow_t&) throw() { UPP::MemoryFree(ptr); } + +void *operator new[](size_t size, const std::nothrow_t&) throw() { void *ptr = UPP::MemoryAlloc(size); return ptr; } +void operator delete[](void *ptr, const std::nothrow_t&) throw() { UPP::MemoryFree(ptr); } + +#endif diff --git a/uppsrc/CtrlLib/AmbientCtrls.iml b/uppsrc/CtrlLib/AmbientCtrls.iml new file mode 100644 index 000000000..02868546a --- /dev/null +++ b/uppsrc/CtrlLib/AmbientCtrls.iml @@ -0,0 +1,13 @@ +PREMULTIPLIED +IMAGE_ID(EB) +IMAGE_ID(EBh) +IMAGE_ID(EBp) +IMAGE_ID(EBd) +IMAGE_ID(EFE) +IMAGE_ID(VE) + +IMAGE_BEGIN_DATA +IMAGE_DATA(120,156,99,96,101,96,101,96,2,66,16,56,112,224,192,127,90,99,6,98,44,124,248,224,1,28,147,42,134,215,194,134) +IMAGE_DATA(134,134,255,216,48,178,6,82,197,208,49,138,133,211,166,77,251,79,107,140,98,33,186,47,97,124,92,190,129,69,3,46) +IMAGE_DATA(31,98,51,143,238,22,2,0,203,29,159,243,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) +IMAGE_END_DATA(96, 6) diff --git a/uppsrc/CtrlLib/ChGtk.cpp b/uppsrc/CtrlLib/ChGtk.cpp index 3d967da77..319d8a03a 100644 --- a/uppsrc/CtrlLib/ChGtk.cpp +++ b/uppsrc/CtrlLib/ChGtk.cpp @@ -10,6 +10,14 @@ NAMESPACE_UPP +#define IMAGECLASS AmbientCtrlsImg +#define IMAGEFILE +#include + +#define IMAGECLASS AmbientCtrlsImg +#define IMAGEFILE +#include + extern int gtk_antialias; extern int gtk_hinting; extern String gtk_hintstyle; @@ -145,6 +153,10 @@ void ChHostSkin() ColoredOverride(CtrlsImg::Iml(), CtrlsImg::Iml()); + int classiq = engine == "Redmond" || engine == "Raleigh" || engine == "Glider" || engine == "Simple"; + if(!classiq) + ColoredOverride(CtrlsImg::Iml(), AmbientCtrlsImg::Iml()); + Color fc = Blend(SColorHighlight, SColorShadow); ChGtkIs().Clear(); @@ -182,9 +194,7 @@ void ChHostSkin() } Point po(0, 0); - - int classiq = engine == "Redmond" || engine == "Raleigh" || engine == "Glider" || engine == "Simple"; - + { Button::Style& s = Button::StyleNormal().Write(); s.overpaint = 3; @@ -474,6 +484,7 @@ void ChHostSkin() } int efm = 0; + if(engine.Find("oxygen") < 0) { EditField::Style& s = EditField::StyleDefault().Write(); Image img; @@ -512,6 +523,7 @@ void ChHostSkin() s.sep2 = SColorShadow(); s.sep1 = SColorLight(); s.sepm = 4; + if(engine.Find("oxygen") < 0) { MultiButton::Style& s = MultiButton::StyleFrame().Write(); for(int i = 0; i < 4; i++) diff --git a/uppsrc/CtrlLib/ChGtk0.cpp b/uppsrc/CtrlLib/ChGtk0.cpp index f2dde02c0..96e8a92ae 100644 --- a/uppsrc/CtrlLib/ChGtk0.cpp +++ b/uppsrc/CtrlLib/ChGtk0.cpp @@ -70,11 +70,16 @@ void SetChGtkSpy_(void (*spy)(const char *name, int state, int shadow, const cha chgtkspy__ = spy; } +INITBLOCK { // This is required to avoid animation related problems with Oxygen-GTK theme + setenv("OXYGEN_APPLICATION_NAME_OVERRIDE", "firefox", 1); +} + Image GetGTK(GtkWidget *widget, int state, int shadow, const char *detail, int type, int cx, int cy, Rect rect) { MemoryIgnoreLeaksBlock __; GdkPixbuf *icon = NULL; + if(type == GTK_ICON || type == GTK_THEMEICON) { gtk_widget_set_sensitive(widget, 1); gtk_widget_set_state(widget, GTK_STATE_NORMAL); @@ -91,6 +96,7 @@ Image GetGTK(GtkWidget *widget, int state, int shadow, const char *detail, int t gtk_widget_set_sensitive(widget, state != 4); gtk_widget_set_state(widget, (GtkStateType)state); } + int ht = type & 0xf000; int rcx, rcy; int margin = (type >> 4) & 7; diff --git a/uppsrc/CtrlLib/CtrlLib.upp b/uppsrc/CtrlLib/CtrlLib.upp index f8fd7c54e..4c14a9977 100644 --- a/uppsrc/CtrlLib/CtrlLib.upp +++ b/uppsrc/CtrlLib/CtrlLib.upp @@ -113,6 +113,7 @@ file ChGtk0.cpp, ChGtk.cpp, ClassicCtrls.iml, + AmbientCtrls.iml, Meta readonly separator, Normal.upt, Complex.upt, diff --git a/uppsrc/Updater/Updater.upp b/uppsrc/Updater/Updater.upp index 02cbe84b1..db3eb1dd2 100644 --- a/uppsrc/Updater/Updater.upp +++ b/uppsrc/Updater/Updater.upp @@ -1,4 +1,4 @@ -description "Utility for U++ enterprise application update system"; +description "Utility for U++ enterprise application update system\377"; uses CtrlLib;