Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:13.2:Update
qtcurve-kde4
sync_to_master.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File sync_to_master.diff of Package qtcurve-kde4
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5c9038f..b2be588 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,8 +136,9 @@ cmake_c_fix_include_path(lib/cairo qtcurve-cairo) cmake_c_add_flags(CMAKE_C_FLAGS -Wall -Wextra -std=gnu99) # Register storage class is deprecated in C++11 but is still used in Qt. # Use compiler option to suppress the warning in clang++. +# -std=c++0x is deprecated but gcc < 4.7 do not recognise c++11 .... cmake_c_add_flags(CMAKE_CXX_FLAGS -Wall -Wextra - -Wno-deprecated-register -std=c++11) + -Wno-deprecated-register -std=c++0x) cmake_c_add_flags(CMAKE_SHARED_LINKER_FLAGS -Wl,--as-needed -Wl,--no-undefined) cmake_c_add_flags(CMAKE_MODULE_LINKER_FLAGS -Wl,--as-needed -Wl,--no-undefined) add_definitions("-D_GNU_SOURCE -pthread") diff --git a/ChangeLog.md b/ChangeLog.md index 65917d7..eb9f038 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -1,3 +1,13 @@ +## (WIP) +1. Fix shadow color + [QtCurve-Bug](https://github.com/QtCurve/qtcurve/issues/54) +2. Revert toolbar background + [QtCurve-Bug](https://github.com/QtCurve/qtcurve/issues/52) +3. Workaround background image drawing. + [QtCurve-Bug](https://github.com/QtCurve/qtcurve/issues/49) +4. Fix text emboldening in gtk2. + [QtCurve-Bug](https://github.com/QtCurve/qtcurve/issues/58) + ## 1.8.18 1. Gtk2: Remove mozilla version detection. 2. Gtk2: Remove `QTC_GTK2_OLD_MOZILLA`. diff --git a/README.md b/README.md index e7ae353..4a4152d 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,19 @@ Usage: QTCURVE_CONFIG_FILE=~/testfile kcalc +# Compiler versions requirement +QtCurve requires the GNU dialect of ISO C99 and ISO C++11 (which means the +compilers have to support `-std=gnu99` and `-std=c++0x` command line option). +`g++>=4.7` and `clang++>=3.3` are fully supported. C compiler for any +reasonable version of gcc and clang should all work well. + +For g++ older than 4.7, you need `-Doverride=` in the `CXXFLAGS` since it +does not support the override keyword in c++11. The trick should work down to +g++ 4.4 for the Qt4 style and 4.6 for the Qt5 stle. + +clang++ 3.3 is not compatible with the stdc++ header shipped with gcc 4.7 so +libc++ is required when compiling with clang++ 3.3. + # License QtCurve `1.8.17` and earlier was licensed under GPLv2+. It was relicensed under LGPLv2.1+ on Nov. 14th 2013 in order to avoid confusion for moving into diff --git a/TODO.md b/TODO.md index c394069..6b10866 100644 --- a/TODO.md +++ b/TODO.md @@ -33,3 +33,5 @@ 11. QPainter composition mode. 12. Change cursor shape while draging the window in empty area. + +13. Separate drawing routines (for both gtk and qt) and add tests for them. diff --git a/gtk2/common/common.h b/gtk2/common/common.h index fb9ea8c..f517393 100644 --- a/gtk2/common/common.h +++ b/gtk2/common/common.h @@ -515,7 +515,8 @@ typedef enum { FOCUS_FULL, FOCUS_FILLED, FOCUS_LINE, - FOCUS_GLOW + FOCUS_GLOW, + FOCUS_NONE } EFocus; typedef enum { diff --git a/gtk2/common/config_file.c b/gtk2/common/config_file.c index 3f6705f..d732ca9 100644 --- a/gtk2/common/config_file.c +++ b/gtk2/common/config_file.c @@ -389,6 +389,8 @@ static EFocus toFocus(const char *str, EFocus def) return FOCUS_LINE; if(0==memcmp(str, "glow", 4)) return FOCUS_GLOW; + if(0==memcmp(str, "none", 4)) + return FOCUS_NONE; } return def; diff --git a/gtk2/style/qt_settings.c b/gtk2/style/qt_settings.c index 7ddb8b5..f5a5c98 100644 --- a/gtk2/style/qt_settings.c +++ b/gtk2/style/qt_settings.c @@ -53,28 +53,27 @@ static char* getKdeHome() { static char *kdeHome = NULL; + if (kdeHome) { + return kdeHome; + } + size_t len = 0; + kdeHome = qtcPopenStdout( + "kde4-config", (const char *const[]){"kde4-config", "--expandvars", + "--localprefix", NULL}, 300, &len); + if (kdeHome && kdeHome[strspn(kdeHome, " \t\b\n\f\v")]) { + if (kdeHome[len - 1] == '\n') { + kdeHome[len - 1] = '\0'; + } + return kdeHome; + } + kdeHome = getenv(getuid() ? "KDEHOME" : "KDEROOTHOME"); if (!kdeHome) { - size_t len = 0; - kdeHome = qtcPopenStdout( - "kde4-config", (const char *const[]){"kde4-config", "--expandvars", - "--localprefix", NULL}, 300, &len); - if (kdeHome) { - if (len > 1 && kdeHome[len - 1] == '\n') { - kdeHome[len - 1] = '\0'; - } else { - kdeHome[len] = '\0'; - } - } else { - kdeHome = getenv(getuid() ? "KDEHOME" : "KDEROOTHOME"); - if (!kdeHome) { - // FIXME - static char kdeHomeStr[MAX_CONFIG_FILENAME_LEN + 1]; - const char *home = qtcGetHome(); - if (strlen(home) < (MAX_CONFIG_FILENAME_LEN - 5)) { - sprintf(kdeHomeStr, "%s/.kde", home); - kdeHome = kdeHomeStr; - } - } + // FIXME + static char kdeHomeStr[MAX_CONFIG_FILENAME_LEN + 1]; + const char *home = qtcGetHome(); + if (strlen(home) < (MAX_CONFIG_FILENAME_LEN - 5)) { + sprintf(kdeHomeStr, "%s/.kde", home); + kdeHome = kdeHomeStr; } } return kdeHome; @@ -974,24 +973,22 @@ static const char* kdeIconsPrefix() { static const char *kdeIcons = NULL; - if (!kdeIcons) { - size_t len = 0; - char *res = qtcPopenStdout("kde4-config", (const char * const[]){ - "kde4-config", "--expandvars", "--install", "icon", NULL}, - 300, &len); - if (res) { - if (len > 1 && res[len - 1]=='\n') { - res[len - 1]='\0'; - } else { - res[len] = '\0'; - } - kdeIcons = res; - } else { - kdeIcons = (QTC_KDE4_ICONS_PREFIX && - strlen(QTC_KDE4_ICONS_PREFIX) > 2 ? - QTC_KDE4_ICONS_PREFIX : DEFAULT_ICON_PREFIX); + if (kdeIcons) { + return kdeIcons; + } + size_t len = 0; + char *res = qtcPopenStdout("kde4-config", (const char * const[]){ + "kde4-config", "--expandvars", "--install", "icon", NULL}, + 300, &len); + if (res && res[strspn(res, " \t\b\n\f\v")]) { + if (res[len - 1]=='\n') { + res[len - 1]='\0'; } + kdeIcons = res; + return kdeIcons; } + kdeIcons = (QTC_KDE4_ICONS_PREFIX && strlen(QTC_KDE4_ICONS_PREFIX) > 2 ? + QTC_KDE4_ICONS_PREFIX : DEFAULT_ICON_PREFIX); return kdeIcons; } diff --git a/gtk2/style/qtcurve.c b/gtk2/style/qtcurve.c index 9571d4b..1ca3664 100644 --- a/gtk2/style/qtcurve.c +++ b/gtk2/style/qtcurve.c @@ -2132,9 +2132,10 @@ gtkDrawLayout(GtkStyle *style, GdkWindow *window, GtkStateType state, drawLayout(cr, style, selectedText ? GTK_STATE_SELECTED : state, use_text || selectedText, area, x, y, layout); - if (opts.embolden && def_but) + if (opts.embolden && def_but) { drawLayout(cr, style, selectedText ? GTK_STATE_SELECTED : state, use_text || selectedText, area, x + 1, y, layout); + } if (swapColors) { for (int i = 0;i < 5;++i) { @@ -2545,6 +2546,9 @@ gtkDrawFocus(GtkStyle *style, GdkWindow *window, GtkStateType state, GdkRectangle *area, GtkWidget *widget, const char *detail, int x, int y, int width, int height) { + if (opts.focus == FOCUS_NONE) { + return; + } if (GTK_IS_EDITABLE(widget)) return; QTC_RET_IF_FAIL(GDK_IS_DRAWABLE(window)); diff --git a/gtk2/style/wmmove.c b/gtk2/style/wmmove.c index 0dda388..b0380b5 100644 --- a/gtk2/style/wmmove.c +++ b/gtk2/style/wmmove.c @@ -327,8 +327,8 @@ qtcWMMoveMotion(GtkWidget *widget, GdkEventMotion *event, void *data) QTC_UNUSED(data); if (qtcWMMoveDragWidget == widget) { // check displacement with respect to drag start - const int distance = (abs(qtcWMMoveLastX - event->x_root) + - abs(qtcWMMoveLastY - event->y_root)); + const int distance = (qtcAbs(qtcWMMoveLastX - event->x_root) + + qtcAbs(qtcWMMoveLastY - event->y_root)); if (distance > 0) qtcWMMoveStopTimer(); diff --git a/lib/cairo/draw.c b/lib/cairo/draw.c index 76c9b0c..99f3fcf 100644 --- a/lib/cairo/draw.c +++ b/lib/cairo/draw.c @@ -27,21 +27,25 @@ QTC_EXPORT void qtcCairoHLine(cairo_t *cr, int x, int y, int w, const GdkColor *col, double a) { + cairo_save(cr); cairo_new_path(cr); qtcCairoSetColor(cr, col, a); cairo_move_to(cr, x, y + 0.5); cairo_line_to(cr, x + w, y + 0.5); cairo_stroke(cr); + cairo_restore(cr); } QTC_EXPORT void qtcCairoVLine(cairo_t *cr, int x, int y, int h, const GdkColor *col, double a) { + cairo_save(cr); cairo_new_path(cr); qtcCairoSetColor(cr, col, a); cairo_move_to(cr, x + 0.5, y); cairo_line_to(cr, x + 0.5, y + h); cairo_stroke(cr); + cairo_restore(cr); } QTC_EXPORT void @@ -52,6 +56,7 @@ qtcCairoPolygon(cairo_t *cr, const GdkColor *col, const QtcRect *area, cairo_set_line_width(cr, 1); qtcCairoClipRect(cr, area); qtcCairoSetColor(cr, col); + cairo_set_antialias(cr, CAIRO_ANTIALIAS_NONE); qtcCairoPathPoints(cr, points, npoints); cairo_close_path(cr); cairo_stroke_preserve(cr); @@ -84,8 +89,8 @@ qtcCairoFadedLine(cairo_t *cr, int x, int y, int width, int height, cairo_pattern_t *pt = cairo_pattern_create_linear(rx, ry, horiz ? rx + width - 1 : rx + 1, horiz ? ry + 1 : ry + height - 1); - cairo_save(cr); + cairo_save(cr); if (gap) { QtcRect r = {x, y, width, height}; cairo_region_t *region = @@ -119,16 +124,18 @@ qtcCairoStripes(cairo_t *cr, int x, int y, int w, int h, { int endx = horizontal ? stripeWidth : 0; int endy = horizontal ? 0 : stripeWidth; - cairo_pattern_t *pat = cairo_pattern_create_linear(x, y, x + endx, y + endy); - cairo_pattern_add_color_stop_rgba(pat, 0.0, 1.0, 1.0, 1.0, 0.0); cairo_pattern_add_color_stop_rgba(pat, 1, 1.0, 1.0, 1.0, 0.15); cairo_pattern_set_extend(pat, CAIRO_EXTEND_REFLECT); + + cairo_save(cr); cairo_set_source(cr, pat); cairo_rectangle(cr, x, y, w, h); cairo_fill(cr); + cairo_restore(cr); + cairo_pattern_destroy(pat); } @@ -146,6 +153,7 @@ qtcCairoDot(cairo_t *cr, int x, int y, int w, int h, const GdkColor *col) cairo_pattern_add_color_stop_rgba(p2, 1, 1, 1, 1, 0.9); cairo_pattern_add_color_stop_rgba(p2, 0, 1, 1, 1, 0.7); + cairo_save(cr); cairo_new_path(cr); cairo_arc(cr, dx + 2.5, dy + 2.5, 2.5, 0, 2 * M_PI); cairo_clip(cr); @@ -159,6 +167,8 @@ qtcCairoDot(cairo_t *cr, int x, int y, int w, int h, const GdkColor *col) cairo_set_source(cr, p2); cairo_rectangle(cr, dx + 1, dy + 1, 4, 4); cairo_fill(cr); + cairo_restore(cr); + cairo_pattern_destroy(p1); cairo_pattern_destroy(p2); } @@ -249,11 +259,13 @@ QTC_EXPORT void qtcCairoLayout(cairo_t *cr, const QtcRect *area, int x, int y, PangoLayout *layout, const GdkColor *col) { + cairo_save(cr); qtcCairoClipRect(cr, area); cairo_set_line_width(cr, 1); qtcCairoSetColor(cr, col); ge_cairo_transform_for_layout(cr, layout, x, y); pango_cairo_show_layout(cr, layout); + cairo_restore(cr); } QTC_EXPORT void diff --git a/lib/utils/process.c b/lib/utils/process.c index 2c584a9..65cceac 100644 --- a/lib/utils/process.c +++ b/lib/utils/process.c @@ -227,7 +227,7 @@ qtcPopen(const char *file, const char *const *argv, static bool qtcPopenReadBuff(QtcPopenBuff *buffs) { - buffs->buff = realloc(buffs->buff, buffs->len + 1024); + buffs->buff = realloc(buffs->buff, buffs->len + 1024 + 1); ssize_t len = read(buffs->orig, buffs->buff + buffs->len, 1024); if (len == 0 || (len == -1 && qtcNoneOf(errno, EAGAIN, EINTR, EWOULDBLOCK))) { diff --git a/lib/utils/process.h b/lib/utils/process.h index 1ede447..b7df28e 100644 --- a/lib/utils/process.h +++ b/lib/utils/process.h @@ -60,8 +60,13 @@ qtcPopenStdout(const char *file, const char *const *argv, { QtcPopenBuff popen_buff = {1, QTC_POPEN_READ, NULL, 0}; bool res = qtcPopenBuff(file, argv, 1, &popen_buff, timeout); - QTC_RET_IF_FAIL(res, NULL); qtcAssign(len, popen_buff.len); + QTC_RET_IF_FAIL(res, NULL); + if (!popen_buff.len) { + qtcFree(popen_buff.buff); + return NULL; + } + popen_buff.buff[popen_buff.len] = '\0'; return popen_buff.buff; } diff --git a/lib/utils/x11helpers.c b/lib/utils/x11helpers.c index a6139c4..e849048 100644 --- a/lib/utils/x11helpers.c +++ b/lib/utils/x11helpers.c @@ -77,7 +77,7 @@ qtcX11ShadowInit() { int shadow_size = 30; int shadow_radius = 4; - QtcColor c1 = {0.5, 0.4, 0.4}; + QtcColor c1 = {0.4, 0.4, 0.4}; QtcColor c2 = {0.2, 0.2, 0.2}; QtcImage *shadow_images[8]; qtcShadowCreate(shadow_size, &c1, &c2, shadow_radius, false, diff --git a/qt4/common/common.h b/qt4/common/common.h index 8c16874..afa7686 100644 --- a/qt4/common/common.h +++ b/qt4/common/common.h @@ -632,7 +632,8 @@ typedef enum { FOCUS_FULL, FOCUS_FILLED, FOCUS_LINE, - FOCUS_GLOW + FOCUS_GLOW, + FOCUS_NONE } EFocus; typedef enum { diff --git a/qt4/common/config_file.cpp b/qt4/common/config_file.cpp index cf2f81b..2d47093 100644 --- a/qt4/common/config_file.cpp +++ b/qt4/common/config_file.cpp @@ -389,6 +389,8 @@ static EFocus toFocus(const char *str, EFocus def) return FOCUS_LINE; if(0==memcmp(str, "glow", 4)) return FOCUS_GLOW; + if(0==memcmp(str, "none", 4)) + return FOCUS_NONE; } return def; @@ -1987,6 +1989,8 @@ static const char *toStr(EFocus f) return "line"; case FOCUS_GLOW: return "glow"; + case FOCUS_NONE: + return "none"; } } diff --git a/qt4/config/qtcurveconfig.cpp b/qt4/config/qtcurveconfig.cpp index 8e785f4..983602d 100644 --- a/qt4/config/qtcurveconfig.cpp +++ b/qt4/config/qtcurveconfig.cpp @@ -711,6 +711,7 @@ static void insertFocusEntries(QComboBox *combo) combo->insertItem(FOCUS_FILLED, i18n("Highlight color, and fill")); combo->insertItem(FOCUS_LINE, i18n("Line drawn with highlight color")); combo->insertItem(FOCUS_GLOW, i18n("Glow")); + combo->insertItem(FOCUS_NONE, i18n("Nothing")); } static void insertGradBorderEntries(QComboBox *combo) diff --git a/qt4/kwin/qtcurvehandler.cpp b/qt4/kwin/qtcurvehandler.cpp index 939ba21..6c95e87 100644 --- a/qt4/kwin/qtcurvehandler.cpp +++ b/qt4/kwin/qtcurvehandler.cpp @@ -128,8 +128,8 @@ void QtCurveHandler::setStyle() bool QtCurveHandler::reset(unsigned long changed) { bool styleChanged = false; - if (abs(m_timeStamp - - getTimeStamp(xdgConfigFolder() + "/qtcurve/stylerc")) > 2) { + if (qtcAbs(m_timeStamp - getTimeStamp(xdgConfigFolder() + + "/qtcurve/stylerc")) > 2) { delete m_style; m_style = 0L; setStyle(); diff --git a/qt4/style/qtcurve.cpp b/qt4/style/qtcurve.cpp index d7659f5..1d5b1d0 100644 --- a/qt4/style/qtcurve.cpp +++ b/qt4/style/qtcurve.cpp @@ -3532,9 +3532,10 @@ void Style::drawPrimitive(PrimitiveElement element, const QStyleOption *option, (!isDialog && opts.bgndOpacity != 100)) { painter->save(); // Blur and shadow here? - if (!(widget && qobject_cast<const QMdiSubWindow*>(widget))) + if (!(widget && qobject_cast<const QMdiSubWindow*>(widget))) { painter->setCompositionMode( QPainter::CompositionMode_Source); + } drawBackground(painter, widget, isDialog ? BGND_DIALOG : BGND_WINDOW); painter->restore(); @@ -4555,6 +4556,8 @@ void Style::drawPrimitive(PrimitiveElement element, const QStyleOption *option, painter->restore(); break; case PE_FrameFocusRect: + if (FOCUS_NONE==opts.focus) + return; if (auto focusFrame = qtcStyleCast<QStyleOptionFocusRect>(option)) { if (!(focusFrame->state&State_KeyboardFocusChange) || (widget && widget->inherits("QComboBoxListView"))) @@ -4810,7 +4813,11 @@ void Style::drawPrimitive(PrimitiveElement element, const QStyleOption *option, etchOffset(doEtch ? 1 : 0); double xd(r.x()+0.5), yd(r.y()+0.5); - const QColor *cols(m_focusCols ? m_focusCols : m_highlightCols); + const QColor *cols = m_focusCols; + // Was: + // const QColor *cols = (m_focusCols ? m_focusCols : + // m_highlightCols); + // which is always m_focusCols path.moveTo(xd+offset+etchOffset, yd+offset+etchOffset); path.lineTo(xd+offset+6+etchOffset, yd+offset+etchOffset); @@ -10466,24 +10473,23 @@ void Style::drawProgressBevelGradient(QPainter *p, const QRect &origRect, const delete pix; } -void Style::drawBevelGradient(const QColor &base, QPainter *p, const QRect &origRect, const QPainterPath &path, - bool horiz, bool sel, EAppearance bevApp, EWidget w, bool useCache) const +void +Style::drawBevelGradient(const QColor &base, QPainter *p, const QRect &origRect, + const QPainterPath &path, bool horiz, bool sel, + EAppearance bevApp, EWidget w, bool useCache) const { - if(origRect.width()<1 || origRect.height()<1) + if (origRect.width() < 1 || origRect.height() < 1) return; - if(qtcIsFlat(bevApp)) - { - if((WIDGET_TAB_TOP!=w && WIDGET_TAB_BOT!=w) || !qtcIsCustomBgnd(&opts) || opts.tabBgnd || !sel) - { - if(path.isEmpty()) + if (qtcIsFlat(bevApp)) { + if (qtcNoneOf(w, WIDGET_TAB_TOP, WIDGET_TAB_BOT) || + !qtcIsCustomBgnd(&opts) || opts.tabBgnd || !sel) { + if (path.isEmpty()) p->fillRect(origRect, base); else p->fillPath(path, base); } - } - else - { + } else { bool tab(WIDGET_TAB_TOP==w || WIDGET_TAB_BOT==w), selected(tab ? false : sel); EAppearance app(selected @@ -11380,7 +11386,12 @@ Style::drawBackground(QPainter *p, const QWidget *widget, popupMenuCols()[ORIGINAL_SHADE], bgndRect, opacity, type, type != BGND_MENU ? opts.bgndAppearance : opts.menuBgndAppearance); + // FIXME, workaround only, the non transparent part of the image will have + // a different overall opacity. + p->save(); + p->setCompositionMode(QPainter::CompositionMode_SourceOver); drawBackgroundImage(p, isWindow, imgRect); + p->restore(); } QPainterPath Style::buildPath(const QRectF &r, EWidget w, int round, double radius) const @@ -11495,13 +11506,12 @@ void Style::drawBorder(QPainter *p, const QRect &r, const QStyleOption *option, hasFocus(enabled && entry && state&State_HasFocus), hasMouseOver(enabled && entry && state & State_MouseOver && opts.unifyCombo && opts.unifySpin); - const QColor *cols(enabled && hasMouseOver && opts.coloredMouseOver && entry - ? m_mouseOverCols - : enabled && hasFocus && m_focusCols && entry - ? m_focusCols - : custom - ? custom - : APP_KRUNNER==theThemedApp ? m_backgroundCols : backgroundColors(option)); + const QColor *cols(enabled && hasMouseOver && opts.coloredMouseOver && + entry ? m_mouseOverCols : enabled && + // && m_focusCols // (always true) + hasFocus && entry ? + m_focusCols : custom ? custom : + APP_KRUNNER==theThemedApp ? m_backgroundCols : backgroundColors(option)); QColor border(WIDGET_DEF_BUTTON==w && IND_FONT_COLOR==opts.defBtnIndicator && enabled ? option->palette.buttonText().color() : cols[WIDGET_PROGRESSBAR==w @@ -11625,7 +11635,7 @@ void Style::drawMdiControl(QPainter *p, const QStyleOptionTitleBar *titleBar, Su ? m_titleBarButtonsCols[btn][ORIGINAL_SHADE] : SC_TitleBarCloseButton==sc && hover && !sunken && !(opts.titlebarButtons&TITLEBAR_BUTTON_COLOR) ? CLOSE_COLOR - : SC_TitleBarCloseButton!=sc && hover && !sunken && m_mouseOverCols && + : SC_TitleBarCloseButton!=sc && hover && !sunken && !(opts.titlebarButtons&TITLEBAR_BUTTON_COLOR) && opts.titlebarButtons&TITLEBAR_BUTTON_USE_HOVER_COLOR ? m_mouseOverCols[ORIGINAL_SHADE] @@ -12434,12 +12444,17 @@ Style::drawMenuOrToolBarBackground(const QWidget *widget, QPainter *p, EAppearance app = menu ? opts.menubarAppearance : opts.toolbarAppearance; if (!qtcIsCustomBgnd(&opts) || !qtcIsFlat(app) || - (menu && SHADE_NONE != opts.shadeMenubars)) { + (menu && opts.shadeMenubars != SHADE_NONE)) { p->save(); +#if 0 + // Revert for now + // This is necessary for correct opacity on the menubar but may + // break transparent gradient. p->setCompositionMode(QPainter::CompositionMode_Source); +#endif QRect rx(r); QColor col(menu && (option->state & State_Enabled || - SHADE_NONE != opts.shadeMenubars) ? + opts.shadeMenubars != SHADE_NONE) ? menuColors(option, m_active)[ORIGINAL_SHADE] : option->palette.background().color()); int opacity = qtcGetOpacity(widget ? widget : getWidget(p)); @@ -12474,12 +12489,11 @@ Style::drawHandleMarkers(QPainter *p, const QRect &rx, // the whole toolbar seems to be active :-( QStyleOption opt(*option); - opt.state&=~State_MouseOver; + opt.state &= ~State_MouseOver; const QColor *border(borderColors(&opt, m_backgroundCols)); - switch(handles) - { + switch (handles) { case LINE_NONE: break; case LINE_1DOT: diff --git a/qt5/common/common.h b/qt5/common/common.h index 13f2969..98c8b52 100644 --- a/qt5/common/common.h +++ b/qt5/common/common.h @@ -630,7 +630,8 @@ typedef enum { FOCUS_FULL, FOCUS_FILLED, FOCUS_LINE, - FOCUS_GLOW + FOCUS_GLOW, + FOCUS_NONE } EFocus; typedef enum { diff --git a/qt5/common/config_file.cpp b/qt5/common/config_file.cpp index 81f03db..621da29 100644 --- a/qt5/common/config_file.cpp +++ b/qt5/common/config_file.cpp @@ -386,6 +386,8 @@ static EFocus toFocus(const char *str, EFocus def) return FOCUS_LINE; if(0==memcmp(str, "glow", 4)) return FOCUS_GLOW; + if(0==memcmp(str, "none", 4)) + return FOCUS_NONE; } return def; @@ -1985,6 +1987,8 @@ static const char *toStr(EFocus f) return "line"; case FOCUS_GLOW: return "glow"; + case FOCUS_NONE: + return "none"; } } diff --git a/qt5/style/qtcurve.cpp b/qt5/style/qtcurve.cpp index c43b8a3..2946b1d 100644 --- a/qt5/style/qtcurve.cpp +++ b/qt5/style/qtcurve.cpp @@ -427,7 +427,8 @@ void Style::init(bool initial) shadeColors(QApplication::palette().color(QPalette::Active, QPalette::Button), m_buttonCols); // Set defaults for Hover and Focus, these will be changed when KDE4 palette is applied... - shadeColors(QApplication::palette().color(QPalette::Active, QPalette::Highlight), m_focusCols); + shadeColors(QApplication::palette().color(QPalette::Active, + QPalette::Highlight), m_focusCols); shadeColors(QApplication::palette().color(QPalette::Active, QPalette::Highlight), m_mouseOverCols); // Dont setup KDE4 fonts/colours here - seems to mess things up when using proxy styles. // See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=638629 @@ -2341,7 +2342,12 @@ Style::drawBackground(QPainter *p, const QWidget *widget, popupMenuCols()[ORIGINAL_SHADE]), bgndRect, opacity, type, (type != BGND_MENU ? opts.bgndAppearance : opts.menuBgndAppearance)); + // FIXME, workaround only, the non transparent part of the image will have + // a different overall opacity. + p->save(); + p->setCompositionMode(QPainter::CompositionMode_SourceOver); drawBackgroundImage(p, isWindow, imgRect); + p->restore(); } QPainterPath @@ -2470,7 +2476,7 @@ Style::drawBorder(QPainter *p, const QRect &r, const QStyleOption *option, opts.unifyCombo && opts.unifySpin); const QColor *cols(enabled && hasMouseOver && opts.coloredMouseOver && entry ? m_mouseOverCols - : enabled && hasFocus && m_focusCols && entry + : enabled && hasFocus && entry ? m_focusCols : custom ? custom @@ -2598,7 +2604,7 @@ void Style::drawMdiControl(QPainter *p, const QStyleOptionTitleBar *titleBar, Su ? m_titleBarButtonsCols[btn][ORIGINAL_SHADE] : SC_TitleBarCloseButton==sc && hover && !sunken && !(opts.titlebarButtons&TITLEBAR_BUTTON_COLOR) ? CLOSE_COLOR - : SC_TitleBarCloseButton!=sc && hover && !sunken && m_mouseOverCols && + : SC_TitleBarCloseButton!=sc && hover && !sunken && !(opts.titlebarButtons&TITLEBAR_BUTTON_COLOR) && opts.titlebarButtons&TITLEBAR_BUTTON_USE_HOVER_COLOR ? m_mouseOverCols[ORIGINAL_SHADE] @@ -3398,7 +3404,12 @@ Style::drawMenuOrToolBarBackground(const QWidget *widget, QPainter *p, if (!qtcIsCustomBgnd(&opts) || !qtcIsFlat(app) || (menu && opts.shadeMenubars != SHADE_NONE)) { p->save(); +#if 0 + // Revert for now + // This is necessary for correct opacity on the menubar but may + // break transparent gradient. p->setCompositionMode(QPainter::CompositionMode_Source); +#endif QRect rx(r); QColor col(menu && (option->state & State_Enabled || opts.shadeMenubars != SHADE_NONE) ? diff --git a/qt5/style/qtcurve_api.cpp b/qt5/style/qtcurve_api.cpp index 21e3c70..2c794b7 100644 --- a/qt5/style/qtcurve_api.cpp +++ b/qt5/style/qtcurve_api.cpp @@ -67,25 +67,6 @@ #include <QDebug> -extern QString (*qt_filedialog_existing_directory_hook)( - QWidget *parent, const QString &caption, const QString &dir, - QFileDialog::Options options); - -extern QString (*qt_filedialog_open_filename_hook)( - QWidget *parent, const QString &caption, const QString &dir, - const QString &filter, QString *selectedFilter, - QFileDialog::Options options); - -extern QStringList (*qt_filedialog_open_filenames_hook)( - QWidget * parent, const QString &caption, const QString &dir, - const QString &filter, QString *selectedFilter, - QFileDialog::Options options); - -extern QString (*qt_filedialog_save_filename_hook)( - QWidget *parent, const QString &caption, const QString &dir, - const QString &filter, QString *selectedFilter, - QFileDialog::Options options); - namespace QtCurve { void @@ -163,13 +144,6 @@ Style::polish(QApplication *app) opts.menuBgndAppearance = APPEARANCE_FLAT; } - if (opts.useQtFileDialogApps.contains(appName)) { - qt_filedialog_existing_directory_hook = 0L; - qt_filedialog_open_filename_hook = 0L; - qt_filedialog_open_filenames_hook = 0L; - qt_filedialog_save_filename_hook = 0L; - } - QCommonStyle::polish(app); if (opts.hideShortcutUnderline) { app->installEventFilter(m_shortcutHandler); @@ -2295,18 +2269,15 @@ void Style::drawControl(ControlElement element, const QStyleOption *option, painter->save(); drawMenuOrToolBarBackground( widget, painter, r, option, false, - toolbar->toolBarArea == Qt::NoToolBarArea || - toolbar->toolBarArea == Qt::BottomToolBarArea || - toolbar->toolBarArea == Qt::TopToolBarArea); - if (TB_NONE != opts.toolbarBorders) { - const QColor *use = /*PE_PanelMenuBar == pe && m_active ? - m_menubarCols : */ - backgroundColors(option); - bool dark = (opts.toolbarBorders == TB_DARK || - opts.toolbarBorders == TB_DARK_ALL); - - if (opts.toolbarBorders == TB_DARK_ALL || - opts.toolbarBorders == TB_LIGHT_ALL) { + qtcOneOf(toolbar->toolBarArea, Qt::NoToolBarArea, + Qt::BottomToolBarArea, Qt::TopToolBarArea)); + if (opts.toolbarBorders != TB_NONE) { + const QColor *use = backgroundColors(option); + bool dark = qtcOneOf(opts.toolbarBorders, + TB_DARK, TB_DARK_ALL); + + if (qtcOneOf(opts.toolbarBorders, + TB_DARK_ALL, TB_LIGHT_ALL)) { painter->setPen(use[0]); painter->drawLine(r.x(), r.y(), r.x() + r.width() - 1, r.y()); diff --git a/qt5/style/qtcurve_primitive.cpp b/qt5/style/qtcurve_primitive.cpp index 253fefb..b5250e5 100644 --- a/qt5/style/qtcurve_primitive.cpp +++ b/qt5/style/qtcurve_primitive.cpp @@ -124,6 +124,9 @@ Style::drawPrimitiveWidget(PrimitiveElement element, drawBackground(painter, option->palette.window().color(), bgndRect, opacity, isDialog ? BGND_DIALOG : BGND_WINDOW, opts.bgndAppearance); + // FIXME, workaround only, the non transparent part of the image will have + // a different overall opacity. + painter->setCompositionMode(QPainter::CompositionMode_SourceOver); drawBackgroundImage(painter, true, opts.bgndImage.type == IMG_FILE && opts.bgndImage.onBorder ? bgndRect : option->rect); return true; @@ -1239,7 +1242,7 @@ Style::drawPrimitiveButton(PrimitiveElement element, const QStyleOption *option, int etchOffset = doEtch ? 1 : 0; double xd = r.x() + 0.5; double yd = r.y() + 0.5; - const QColor *cols = m_focusCols ? m_focusCols : m_highlightCols; + const QColor *cols = m_focusCols; path.moveTo(xd + offset + etchOffset, yd + offset + etchOffset); path.lineTo(xd + offset + 6 + etchOffset, yd + offset + etchOffset); @@ -1297,6 +1300,9 @@ Style::drawPrimitivePanelMenu(PrimitiveElement element, } drawBackground(painter, popupMenuCols()[ORIGINAL_SHADE], r, opts.menuBgndOpacity, BGND_MENU, opts.menuBgndAppearance); + // FIXME, workaround only, the non transparent part of the image will have + // a different overall opacity. + painter->setCompositionMode(QPainter::CompositionMode_SourceOver); drawBackgroundImage(painter, false, r); // TODO: draw border in other functions. if (opts.popupBorder) { @@ -1360,6 +1366,10 @@ Style::drawPrimitiveFrameFocusRect(PrimitiveElement element, const QRect &r = option->rect; State state = option->state; const QPalette &palette(option->palette); + + if (FOCUS_NONE==opts.focus) + return true; + if (auto focusFrame = qtcStyleCast<QStyleOptionFocusRect>(option)) { if (!(focusFrame->state & State_KeyboardFocusChange) || (widget && widget->inherits("QComboBoxListView"))) {
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor