X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;ds=inline;f=radiant%2Fmainframe.cpp;h=a91157bee2e9d1cb74765b406e4c3754d0433406;hb=35680f96d57400576d1e3996f2e8064e97e71ec9;hp=a441e03c39a9e9b38baec34522b8f8167aa83ffa;hpb=04a61593c35c583ea966469d10dd92040cd7da64;p=xonotic%2Fnetradiant.git diff --git a/radiant/mainframe.cpp b/radiant/mainframe.cpp index a441e03c..a91157be 100644 --- a/radiant/mainframe.cpp +++ b/radiant/mainframe.cpp @@ -184,6 +184,9 @@ void VFS_Destroy() // Home Paths +#ifdef WIN32 +#include +#endif void HomePaths_Realise() { #if defined(POSIX) @@ -196,6 +199,26 @@ void HomePaths_Realise() Q_mkdir(g_qeglobals.m_userEnginePath.c_str()); } else +#elif defined(WIN32) + if(!string_empty(prefix)) + { + StringOutputStream path(256); + TCHAR mydocsdir[MAX_PATH + 1]; + if(SHGetFolderPath(NULL, CSIDL_PERSONAL, NULL, 0, mydocsdir)) + { + path << DirectoryCleaned(mydocsdir) << "My Games/" << prefix << "/"; + // win32: only add it if it already exists + if(file_is_directory(path.c_str())) + g_qeglobals.m_userEnginePath = path.c_str(); + else + g_qeglobals.m_userEnginePath = EnginePath_get(); + } + else + { + g_qeglobals.m_userEnginePath = EnginePath_get(); + } + } + else #endif { g_qeglobals.m_userEnginePath = EnginePath_get(); @@ -992,9 +1015,9 @@ void OpenUpdateURL() // open the Q3Rad manual void OpenHelpURL() { - // at least on win32, AppPath + "Q3Rad_Manual/index.htm" + // at least on win32, AppPath + "docs/index.html" StringOutputStream help(256); - help << AppPath_get() << "Q3Rad_Manual/index.htm"; + help << AppPath_get() << "docs/index.html"; OpenURL(help.c_str()); } @@ -1189,13 +1212,21 @@ void SelectFaceMode() class CloneSelected : public scene::Graph::Walker { bool doMakeUnique; + NodeSmartReference worldspawn; public: - CloneSelected(bool d): doMakeUnique(d) { } + CloneSelected(bool d): doMakeUnique(d), worldspawn(Map_FindOrInsertWorldspawn(g_map)) + { + } bool pre(const scene::Path& path, scene::Instance& instance) const { if(path.size() == 1) return true; + // ignore worldspawn, but keep checking children + NodeSmartReference me(path.top().get()); + if(me == worldspawn) + return true; + if(!path.top().get().isRoot()) { Selectable* selectable = Instance_getSelectable(instance); @@ -1213,6 +1244,11 @@ public: if(path.size() == 1) return; + // ignore worldspawn, but keep checking children + NodeSmartReference me(path.top().get()); + if(me == worldspawn) + return; + if(!path.top().get().isRoot()) { Selectable* selectable = Instance_getSelectable(instance); @@ -3303,13 +3339,10 @@ void GridStatus_onTextureLockEnabledChanged() } } -namespace -{ - GLFont g_font(0, 0, 0, 0); -} - void GlobalGL_sharedContextCreated() { + GLFont *g_font = NULL; + // report OpenGL information globalOutputStream() << "GL_VENDOR: " << reinterpret_cast(glGetString (GL_VENDOR)) << "\n"; globalOutputStream() << "GL_RENDERER: " << reinterpret_cast(glGetString (GL_RENDERER)) << "\n"; @@ -3325,19 +3358,15 @@ void GlobalGL_sharedContextCreated() #ifdef WIN32 /* win32 is dodgy here, just use courier new then */ - g_font = glfont_create("courier new 8"); + g_font = glfont_create("arial 9"); #else - /* use default font here (Sans 10 is gtk default) */ GtkSettings *settings = gtk_settings_get_default(); gchar *fontname; g_object_get(settings, "gtk-font-name", &fontname, NULL); g_font = glfont_create(fontname); #endif - GlobalOpenGL().m_font = g_font.getDisplayList(); - GlobalOpenGL().m_fontHeight = g_font.getPixelHeight(); - GlobalOpenGL().m_fontAscent = g_font.getPixelAscent(); - GlobalOpenGL().m_fontDescent = g_font.getPixelDescent(); + GlobalOpenGL().m_font = g_font; } void GlobalGL_sharedContextDestroyed()