📄 qapplication_qws.cpp
字号:
} else { QETWidget *etw = static_cast<QETWidget*>(w); etw->updateRegion(); if (etw->isVisible()) { etw->repaintHierarchy(etw->geometry(), true); etw->repaintDecoration(qApp->desktop()->rect(), true); } } } // only update the mwr if it is full screen. if (isFullScreen) { QApplicationPriate *ap = QApplicationPrivate::instance(); ap->setMaxWindowRect(qt_screen, QRect(0,0, qt_screen->width(), qt_screen->height())); }#endif}#endifstatic bool qt_try_modal(QWidget *, QWSEvent *);/***************************************************************************** qt_init() - initializes Qt/FB *****************************************************************************/static void qt_set_qws_resources(){ if (QApplication::desktopSettingsAware()) QApplicationPrivate::qws_apply_settings(); if (appFont) QApplication::setFont(QFont(QString::fromLocal8Bit(appFont))); if (appBGCol || appBTNCol || appFGCol) { (void) QApplication::style(); // trigger creation of application style and system palettes QColor btn; QColor bg; QColor fg; if (appBGCol) bg = QColor(appBGCol); else bg = QApplicationPrivate::sys_pal->color(QPalette::Window); if (appFGCol) fg = QColor(appFGCol); else fg = QApplicationPrivate::sys_pal->color(QPalette::WindowText); if (appBTNCol) btn = QColor(appBTNCol); else btn = QApplicationPrivate::sys_pal->color(QPalette::Button); int h,s,v; fg.getHsv(&h,&s,&v); QColor base = Qt::white; bool bright_mode = false; if (v >= 255 - 50) { base = btn.darker(150); bright_mode = true; } QPalette pal(fg, btn, btn.lighter(), btn.darker(), btn.darker(150), fg, Qt::white, base, bg); if (bright_mode) { pal.setColor(QPalette::HighlightedText, base); pal.setColor(QPalette::Highlight, Qt::white); } else { pal.setColor(QPalette::HighlightedText, Qt::white); pal.setColor(QPalette::Highlight, Qt::darkBlue); } QColor disabled((fg.red() + btn.red()) / 2, (fg.green() + btn.green())/ 2, (fg.blue() + btn.blue()) / 2); pal.setColorGroup(QPalette::Disabled, disabled, btn, btn.lighter(125), btn.darker(), btn.darker(150), disabled, Qt::white, Qt::white, bg); if (bright_mode) { pal.setColor(QPalette::Disabled, QPalette::HighlightedText, base); pal.setColor(QPalette::Disabled, QPalette::Highlight, Qt::white); } else { pal.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::white); pal.setColor(QPalette::Disabled, QPalette::Highlight, Qt::darkBlue); } QApplicationPrivate::setSystemPalette(pal); }}void QApplicationPrivate::initializeWidgetPaletteHash(){}/*! \internal apply the settings to the application*/bool QApplicationPrivate::qws_apply_settings(){#ifndef QT_NO_SETTINGS QSettings settings(QSettings::UserScope, QLatin1String("Trolltech")); settings.beginGroup(QLatin1String("Qt")); QStringList strlist; int i; QPalette pal(Qt::black); int groupCount = 0; strlist = settings.value(QLatin1String("Palette/active")).toStringList(); if (strlist.count() == QPalette::NColorRoles) { ++groupCount; for (i = 0; i < QPalette::NColorRoles; i++) pal.setColor(QPalette::Active, (QPalette::ColorRole) i, QColor(strlist[i])); } strlist = settings.value(QLatin1String("Palette/inactive")).toStringList(); if (strlist.count() == QPalette::NColorRoles) { ++groupCount; for (i = 0; i < QPalette::NColorRoles; i++) pal.setColor(QPalette::Inactive, (QPalette::ColorRole) i, QColor(strlist[i])); } strlist = settings.value(QLatin1String("Palette/disabled")).toStringList(); if (strlist.count() == QPalette::NColorRoles) { ++groupCount; for (i = 0; i < QPalette::NColorRoles; i++) pal.setColor(QPalette::Disabled, (QPalette::ColorRole) i, QColor(strlist[i])); } if (groupCount == QPalette::NColorGroups) QApplicationPrivate::setSystemPalette(pal); QString str = settings.value(QLatin1String("font")).toString(); if (!str.isEmpty()) { QFont font(QApplication::font()); font.fromString(str); QApplicationPrivate::setSystemFont(font); } // read library (ie. plugin) path list QString libpathkey = QString::fromLatin1("%1.%2/libraryPath") .arg(QT_VERSION >> 16) .arg((QT_VERSION & 0xff00) >> 8); QStringList pathlist = settings.value(libpathkey).toString().split(QLatin1Char(':'));#ifndef QT_NO_LIBRARY if (! pathlist.isEmpty()) { QStringList::ConstIterator it = pathlist.constBegin(); while (it != pathlist.constEnd()) QApplication::addLibraryPath(*it++); }#endif // read new QStyle QString stylename = settings.value(QLatin1String("style")).toString(); if (QCoreApplication::startingUp()) { if (!stylename.isEmpty() && !QApplicationPrivate::styleOverride) QApplicationPrivate::styleOverride = new QString(stylename); } else { QApplication::setStyle(stylename); } int num = settings.value(QLatin1String("doubleClickInterval"), QApplication::doubleClickInterval()).toInt(); QApplication::setDoubleClickInterval(num); num = settings.value(QLatin1String("cursorFlashTime"), QApplication::cursorFlashTime()).toInt(); QApplication::setCursorFlashTime(num);#ifndef QT_NO_WHEELEVENT num = settings.value(QLatin1String("wheelScrollLines"), QApplication::wheelScrollLines()).toInt(); QApplication::setWheelScrollLines(num);#endif QString colorspec = settings.value(QLatin1String("colorSpec"), QVariant(QLatin1String("default"))).toString(); if (colorspec == QLatin1String("normal")) QApplication::setColorSpec(QApplication::NormalColor); else if (colorspec == QLatin1String("custom")) QApplication::setColorSpec(QApplication::CustomColor); else if (colorspec == QLatin1String("many")) QApplication::setColorSpec(QApplication::ManyColor); else if (colorspec != QLatin1String("default")) colorspec = QLatin1String("default");#ifndef QT_NO_TEXTCODEC QString defaultcodec = settings.value(QLatin1String("defaultCodec"), QVariant(QLatin1String("none"))).toString(); if (defaultcodec != QLatin1String("none")) { QTextCodec *codec = QTextCodec::codecForName(defaultcodec.toLatin1()); if (codec) QTextCodec::setCodecForTr(codec); }#endif int w = settings.value(QLatin1String("globalStrut/width")).toInt(); int h = settings.value(QLatin1String("globalStrut/height")).toInt(); QSize strut(w, h); if (strut.isValid()) QApplication::setGlobalStrut(strut); QStringList effects = settings.value(QLatin1String("GUIEffects")).toStringList(); QApplication::setEffectEnabled(Qt::UI_General, effects.contains(QLatin1String("general"))); QApplication::setEffectEnabled(Qt::UI_AnimateMenu, effects.contains(QLatin1String("animatemenu"))); QApplication::setEffectEnabled(Qt::UI_FadeMenu, effects.contains(QLatin1String("fademenu"))); QApplication::setEffectEnabled(Qt::UI_AnimateCombo, effects.contains(QLatin1String("animatecombo"))); QApplication::setEffectEnabled(Qt::UI_AnimateTooltip, effects.contains(QLatin1String("animatetooltip"))); QApplication::setEffectEnabled(Qt::UI_FadeTooltip, effects.contains(QLatin1String("fadetooltip"))); QApplication::setEffectEnabled(Qt::UI_AnimateToolBox, effects.contains(QLatin1String("animatetoolbox"))); settings.beginGroup(QLatin1String("Font Substitutions")); QStringList fontsubs = settings.childKeys(); if (!fontsubs.isEmpty()) { QStringList::Iterator it = fontsubs.begin(); for (; it != fontsubs.end(); ++it) { QString fam = *it; QStringList subs = settings.value(fam).toStringList(); QFont::insertSubstitutions(fam, subs); } } settings.endGroup(); settings.endGroup(); // Qt settings.beginGroup(QLatin1String("QWS Font Fallbacks")); if (!settings.childKeys().isEmpty()) { // from qfontdatabase_qws.cpp extern void qt_applyFontDatabaseSettings(const QSettings &); qt_applyFontDatabaseSettings(settings); } settings.endGroup(); return true;#else return false;#endif // QT_NO_SETTINGS}static void init_display(){ if (qt_fbdpy) return; // workaround server==client case // Connect to FB server qt_fbdpy = new QWSDisplay(); // Get display parameters // Set paintdevice parameters // XXX initial info sent from server // Misc. initialization QColormap::initialize(); QFont::initialize();#ifndef QT_NO_CURSOR QCursorData::initialize();#endif qApp->setObjectName(appName); if (!QApplicationPrivate::app_font) { QFont f;#ifdef QT_NO_FREETYPE f = QFont(QLatin1String("helvetica"), 10);#else f = QFont(QLatin1String("DejaVu Sans"), 12);#endif QApplication::setFont(f); } qt_set_qws_resources();}void qt_init_display(){ qt_is_gui_used = true; qws_single_process = true; init_display();}static bool read_bool_env_var(const char *var, bool defaultvalue){ // returns true if env variable is set to non-zero // returns false if env var is set to zero // returns defaultvalue if env var not set char *x = ::getenv(var); return (x && *x) ? (strcmp(x,"0") != 0) : defaultvalue;}void qt_init(QApplicationPrivate *priv, int type){ if (type == QApplication::GuiServer) qt_is_gui_used = false; //we'll turn it on in a second qws_sw_cursor = read_bool_env_var("QWS_SW_CURSOR",qws_sw_cursor); qws_screen_is_interlaced = read_bool_env_var("QWS_INTERLACE",false); const char *display = ::getenv("QWS_DISPLAY"); if (display) qws_display_spec = display; // since we setenv later! //qws_savefonts = qgetenv("QWS_SAVEFONTS") != 0; //qws_shared_memory = qgetenv("QWS_NOSHARED") == 0; int flags = 0; char *p; int argc = priv->argc; char **argv = priv->argv; int j; // Set application name if (argv && *argv) { //apparently, we allow people to pass 0 on the other platforms p = strrchr(argv[0], '/'); appName = QString::fromLocal8Bit(p ? p + 1 : argv[0]); } // Get command line params j = argc ? 1 : 0; QString decoration; for (int i=1; i<argc; i++) { if (argv[i] && *argv[i] != '-') { argv[j++] = argv[i]; continue; } QByteArray arg = argv[i]; if (arg == "-fn" || arg == "-font") { if (++i < argc) appFont = argv[i]; } else if (arg == "-bg" || arg == "-background") { if (++i < argc) appBGCol = argv[i]; } else if (arg == "-btn" || arg == "-button") { if (++i < argc) appBTNCol = argv[i]; } else if (arg == "-fg" || arg == "-foreground") { if (++i < argc) appFGCol = argv[i]; } else if (arg == "-name") { if (++i < argc) appName = QString::fromLocal8Bit(argv[i]); } else if (arg == "-title") { if (++i < argc) mwTitle = argv[i]; } else if (arg == "-geometry") { if (++i < argc) mwGeometry = argv[i]; } else if (arg == "-shared") { qws_shared_memory = true; } else if (arg == "-noshared") { qws_shared_memory = false; } else if (arg == "-savefonts") { qws_savefonts = true; } else if (arg == "-nosavefonts") { qws_savefonts = false; } else if (arg == "-swcursor") { qws_sw_cursor = true; } else if (arg == "-noswcursor") { qws_sw_cursor = false; } else if (arg == "-keyboard") { flags &= ~QWSServer::DisableKeyboard; } else if (arg == "-nokeyboard") { flags |= QWSServer::DisableKeyboard; } else if (arg == "-mouse") { flags &= ~QWSServer::DisableMouse; } else if (arg == "-nomouse") { flags |= QWSServer::DisableMouse; } else if (arg == "-qws") { type = QApplication::GuiServer; } else if (arg == "-interlaced") { qws_screen_is_interlaced = true; } else if (arg == "-display") { if (++i < argc) qws_display_spec = argv[i]; } else if (arg == "-decoration") { if (++i < argc) decoration = QString::fromLocal8Bit(argv[i]); } else { argv[j++] = argv[i]; } } if(j < priv->argc) { priv->argv[j] = 0; priv->argc = j; } mouseInWidget = new QPointer<QWidget>; const QString disp = QString::fromLatin1(qws_display_spec); QRegExp regexp(QLatin1String(":(\\d+)$")); if (regexp.lastIndexIn(disp) != -1) { const QString capture = regexp.cap(1); bool ok = false; int id = capture.toInt(&ok); if (ok) qws_display_id = id; } if (type == QApplication::GuiServer) { qt_appType = QApplication::Type(type); qws_single_process = true; QWSServer::startup(flags); setenv("QWS_DISPLAY", qws_display_spec.constData(), 0); } if(qt_is_gui_used) { init_display();#ifndef QT_NO_QWS_MANAGER if (decoration.isEmpty()) {#ifndef QT_NO_QWS_DECORATION_STYLED decoration = QString::fromLatin1("styled");#else decoration = QString::fromLatin1("default");#endif } qws_decoration = QApplication::qwsSetDecoration(decoration);#ifndef QT_NO_QWS_DECORATION_DEFAULT if (!qws_decoration) QApplication::qwsSetDecoration(new QDecorationDefault);#endif#endif // QT_NO_QWS_MANAGER#ifndef QT_NO_QWS_INPUTMETHODS qApp->setInputContext(new QWSInputContext);#endif }/*### convert interlace style if (qws_screen_is_interlaced) QApplication::setStyle(new QInterlaceStyle);*/}bool qt_sendSpontaneousEvent(QObject *obj, QEvent *event){ return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -