]> git.xonotic.org Git - xonotic/netradiant.git/commitdiff
Merge branch 'focus-ok-button' into 'master'
authorThomas Debesse <dev@illwieckz.net>
Mon, 8 Nov 2021 22:22:20 +0000 (22:22 +0000)
committerThomas Debesse <dev@illwieckz.net>
Mon, 8 Nov 2021 22:22:20 +0000 (22:22 +0000)
Focus "ok" button on modal windows by default

See merge request xonotic/netradiant!186

CMakeLists.txt
gamepack-manager
libs/gtkutil/paned.cpp
libs/gtkutil/paned.h
radiant/mainframe.cpp
radiant/mainframe.h
radiant/texwindow.cpp
setup/data/tools/bitmaps/window5.png [new file with mode: 0644]

index b2fa296e953cd9c6c2fcfec248b5a3afd8bd3ab1..0f766cab56dc1db6e219ea7402bce20219559ade 100644 (file)
@@ -20,7 +20,7 @@ if (APPLE)
 endif ()
 
 set(BUILTIN_GTKGLEXT_BUILT OFF CACHE INTERNAL "...")
-if (EXISTS "${BUILTINS_PKGCONFIG_DIR}gtkglext-1.0.pc")
+if (EXISTS "${BUILTINS_PKGCONFIG_DIR}/gtkglext-1.0.pc")
     set(BUILTIN_GTKGLEXT_BUILT ON)
 endif ()
 
@@ -373,12 +373,14 @@ if (BUILTIN_GTKGLEXT)
 
     set(GTKGLEXT_CFLAGS "$ENV{CFLAGS} ${GTKGLEXT_CFLAGS}")
 
+
+    set(CONFIGURE_OPTIONS --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf
+        --disable-dependency-tracking --without-x)
+
     if (NOT CMAKE_BUILD_TYPE MATCHES Release)
-        set(GTKGLEXT_CFLAGS "${GTKGLEXT_CFLAGS} -g")
+        set(CONFIGURE_OPTIONS "${CONFIGURE_OPTIONS} --disable-debug")
     endif ()
 
-    set(CONFIGURE_OPTIONS --disable-gtk-doc --disable-gtk-doc-html --disable-gtk-doc-pdf)
-
     if (APPLE)
         set(GTKGLEXT_GIT_TAG macos)
     else ()
@@ -395,8 +397,8 @@ if (BUILTIN_GTKGLEXT)
         GIT_REPOSITORY https://gitlab.gnome.org/illwieckz/gtkglext.git
         GIT_TAG ${GTKGLEXT_GIT_TAG}
         BUILD_IN_SOURCE ON
-        CONFIGURE_COMMAND export CFLAGS=${GTKGLEXT_LDFLAGS}
-        CONFIGURE_COMMAND && export LDFLAGS=${GTKGLEXT_CFLAGS}
+        CONFIGURE_COMMAND export CFLAGS=${GTKGLEXT_CFLAGS}
+        CONFIGURE_COMMAND && export LDFLAGS=${GTKGLEXT_LDFLAGS}
         CONFIGURE_COMMAND && export NOCONFIGURE=1
         CONFIGURE_COMMAND && ./autogen.sh
         CONFIGURE_COMMAND && ./configure --prefix "${BUILTINS_INSTALL_DIR}" ${CONFIGURE_OPTIONS}
index 980a9a3cfa4c1498a2d2c73599ac363b2bbe6a66..4ea8fe4b238391960ba3caf71e5d86ec59934302 100755 (executable)
@@ -61,7 +61,7 @@ Doom3           yes  proprietary  svn     svn://svn.icculus.org/gtkradiant-gamep
 ET              yes  proprietary  svn     svn://svn.icculus.org/gtkradiant-gamepacks/ETPack/branches/1.5/
 Heretic2        yes  proprietary  svn     svn://svn.icculus.org/gtkradiant-gamepacks/Her2Pack/branches/1.5/
 JediAcademy     no   proprietary  svn     svn://svn.icculus.org/gtkradiant-gamepacks/JAPack/branches/1.5/
-Kingpin         yes  unknown      zip     http://download.kingpin.info/kingpin/editing/maps/map_editors/NetRadiant/addon/Kingpinpack.zip
+Kingpin         yes  unknown      zip     https://www.kingpin.info/download/kingpin/editing/maps/map_editors/NetRadiant/addon/Kingpinpack.zip
 Neverball       yes  proprietary  zip     http://ingar.intranifty.net/files/netradiant/gamepacks/NeverballPack.zip
 Nexuiz          yes  GPL          gitdir  git://git.icculus.org/divverent/nexuiz.git misc/netradiant-NexuizPack master
 OpenArena       yes  GPL          git     https://github.com/NeonKnightOA/oagamepack.git
index 4f724eef96bd6c247bd11044f0911278a5de39d4..e664aef4ee400ee5d9120f05919a918c855f7c0d 100644 (file)
  */
 
 #include "paned.h"
-
-#include <gtk/gtk.h>
-#include <uilib/uilib.h>
-
 #include "frame.h"
 
-
-class PanedState
-{
-public:
-float position;
-int size;
-};
-
 gboolean hpaned_allocate(ui::Widget widget, GtkAllocation* allocation, PanedState* paned ){
        if ( paned->size != allocation->width ) {
                paned->size = allocation->width;
index 842996efb5e3db6097b3cfa1899766e50c99cecd..951a72d7bc08237d008b2030f61229c0f28989ac 100644 (file)
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
  */
 
+#include <gtk/gtk.h>
 #include <uilib/uilib.h>
 
 #if !defined( INCLUDED_GTKUTIL_PANED_H )
 #define INCLUDED_GTKUTIL_PANED_H
 
+class PanedState
+{
+public:
+float position;
+int size;
+};
+
+gboolean hpaned_allocate( ui::Widget widget, GtkAllocation* allocation, PanedState* paned );
+gboolean vpaned_allocate( ui::Widget widget, GtkAllocation* allocation, PanedState* paned );
+gboolean paned_position( ui::Widget widget, gpointer dummy, PanedState* paned );
+
 ui::HPaned create_split_views( ui::Widget topleft, ui::Widget topright, ui::Widget botleft, ui::Widget botright );
 
 #endif
index 17e53efc7279a87a92f409641c3024c7b5acba43..3b691f3a4684bf2c115fe6c1d5267c55ff0cd23d 100644 (file)
@@ -2943,6 +2943,9 @@ static gint mainframe_delete( ui::Widget widget, GdkEvent *event, gpointer data
        return TRUE;
 }
 
+PanedState g_single_hpaned = { 0.75f, -1, };
+PanedState g_single_vpaned = { 0.75f, -1, };
+
 void MainFrame::Create(){
        ui::Window window = ui::Window( ui::window_type::TOP );
 
@@ -3027,7 +3030,8 @@ void MainFrame::Create(){
 
        window.show();
 
-       if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft ) {
+       if ( CurrentStyle() == eRegular || CurrentStyle() == eRegularLeft )
+       {
                {
                        ui::Widget vsplit = ui::VPaned(ui::New);
                        m_vSplit = vsplit;
@@ -3064,7 +3068,6 @@ void MainFrame::Create(){
                                                gtk_paned_add2( GTK_PANED( hsplit ), xy_window );
                                        }
 
-
                                        // camera
                                        m_pCamWnd = NewCamWnd();
                                        GlobalCamera_setCamWnd( *m_pCamWnd );
@@ -3093,7 +3096,8 @@ void MainFrame::Create(){
 
                gtk_paned_set_position( GTK_PANED( m_vSplit2 ), g_layout_globals.nCamHeight );
        }
-       else if ( CurrentStyle() == eFloating ) {
+       else if ( CurrentStyle() == eFloating )
+       {
                {
                        ui::Window window = ui::Window(create_persistent_floating_window( "Camera", m_window ));
                        global_accel_connect_window( window );
@@ -3187,7 +3191,7 @@ void MainFrame::Create(){
 
                GroupDialog_show();
        }
-       else // 4 way
+       else if ( CurrentStyle() == eSplit )
        {
                m_pCamWnd = NewCamWnd();
                GlobalCamera_setCamWnd( *m_pCamWnd );
@@ -3210,16 +3214,66 @@ void MainFrame::Create(){
 
                ui::Widget xz = m_pXZWnd->GetWidget();
 
-        auto split = create_split_views( camera, yz, xy, xz );
+               auto split = create_split_views( camera, yz, xy, xz );
                vbox.pack_start( split, TRUE, TRUE, 0 );
 
                {
-            auto frame = create_framed_widget( TextureBrowser_constructWindow( window ) );
+               auto frame = create_framed_widget( TextureBrowser_constructWindow( window ) );
                        g_page_textures = GroupDialog_addPage( "Textures", frame, TextureBrowserExportTitleCaller() );
 
                        WORKAROUND_GOBJECT_SET_GLWIDGET( window, TextureBrowser_getGLWidget() );
                }
        }
+       else // single window
+       {
+               m_pCamWnd = NewCamWnd();
+               GlobalCamera_setCamWnd( *m_pCamWnd );
+               CamWnd_setParent( *m_pCamWnd, window );
+
+               ui::Widget camera = CamWnd_getWidget( *m_pCamWnd );
+
+               m_pYZWnd = new XYWnd();
+               m_pYZWnd->SetViewType( YZ );
+
+               ui::Widget yz = m_pYZWnd->GetWidget();
+
+               m_pXYWnd = new XYWnd();
+               m_pXYWnd->SetViewType( XY );
+
+               ui::Widget xy = m_pXYWnd->GetWidget();
+
+               m_pXZWnd = new XYWnd();
+               m_pXZWnd->SetViewType( XZ );
+
+               ui::Widget xz = m_pXZWnd->GetWidget();
+
+               ui::Widget hsplit = ui::HPaned(ui::New);
+               vbox.pack_start( hsplit, TRUE, TRUE, 0 );
+               hsplit.show();
+
+               ui::Widget split = create_split_views( camera, yz, xy, xz );
+
+               ui::Widget vsplit = ui::VPaned(ui::New);
+               vsplit.show();
+
+               // textures
+               ui::Widget texture_window = create_framed_widget( TextureBrowser_constructWindow( window ) );
+
+               // console
+               ui::Widget console_window = create_framed_widget( Console_constructWindow( window ) );
+
+               gtk_paned_add1( GTK_PANED( hsplit ), split );
+               gtk_paned_add2( GTK_PANED( hsplit ), vsplit );
+
+               gtk_paned_add1( GTK_PANED( vsplit ), texture_window  );
+               gtk_paned_add2( GTK_PANED( vsplit ), console_window  );
+
+               hsplit.connect( "size_allocate", G_CALLBACK( hpaned_allocate ), &g_single_hpaned );
+               hsplit.connect( "notify::position", G_CALLBACK( paned_position ), &g_single_hpaned );
+
+               vsplit.connect( "size_allocate", G_CALLBACK( vpaned_allocate ), &g_single_vpaned );
+               vsplit.connect( "notify::position", G_CALLBACK( paned_position ), &g_single_vpaned );
+       }
 
        EntityList_constructWindow( window );
        PreferencesDialog_constructWindow( window );
@@ -3384,7 +3438,7 @@ void GlobalGL_sharedContextDestroyed(){
 
 void Layout_constructPreferences( PreferencesPage& page ){
        {
-               const char* layouts[] = { "window1.png", "window2.png", "window3.png", "window4.png" };
+               const char* layouts[] = { "window1.png", "window2.png", "window3.png", "window4.png", "window5.png" };
                page.appendRadioIcons(
                        "Window Layout",
                        STRING_ARRAY_RANGE( layouts ),
index ca0c4c97e95bd683826d5b60721e74790f88a156..ee7368b1396e47bcb33bbd029d88a4240df22f92 100644 (file)
@@ -54,6 +54,7 @@ enum EViewStyle
        eFloating = 1,
        eSplit = 2,
        eRegularLeft = 3,
+       eSingle = 4,
 };
 
 MainFrame();
index f741f0ceafafa77bff560b1177843f26b02bdf0f..18311b40262299d04c2553168b2f1071d9b14da1 100644 (file)
@@ -823,6 +823,14 @@ void operator()( const char* name ) const {
 };
 
 void TextureDirectory_loadTexture( const char* directory, const char* texture ){
+       // Doom3-like dds/ prefix (used by DarkPlaces).
+       // When we list dds/textures/ folder,
+       // store the texture names without dds/ prefix.
+       if ( !strncmp( "dds/", directory, 4 ) )
+       {
+               directory = &directory[ 4 ];
+       }
+
        StringOutputStream name( 256 );
        name << directory << StringRange( texture, path_get_filename_base_end( texture ) );
 
@@ -865,6 +873,9 @@ void TextureBrowser_ShowDirectory( TextureBrowser& textureBrowser, const char* d
                {
                        LoadShaderVisitor visitor;
                        archive->forEachFile( Archive::VisitorFunc( visitor, Archive::eFiles, 0 ), "textures/" );
+
+                       // Doom3-like dds/ prefix (used by DarkPlaces).
+                       archive->forEachFile( Archive::VisitorFunc( visitor, Archive::eFiles, 0 ), "dds/textures/" );
                }
                else if ( extension_equal_i( path_get_extension( directory ), "wad" ) )
                {
@@ -886,7 +897,19 @@ void TextureBrowser_ShowDirectory( TextureBrowser& textureBrowser, const char* d
                        StringOutputStream dirstring( 64 );
                        dirstring << "textures/" << directory;
 
-                       Radiant_getImageModules().foreachModule( LoadTexturesByTypeVisitor( dirstring.c_str() ) );
+                       {
+                               LoadTexturesByTypeVisitor visitor( dirstring.c_str() );
+                               Radiant_getImageModules().foreachModule( visitor );
+                       }
+
+                       // Doom3-like dds/ prefix (used by DarkPlaces).
+                       dirstring.clear();
+                       dirstring << "dds/textures/" << directory;
+
+                       {
+                               LoadTexturesByTypeVisitor visitor( dirstring.c_str() );
+                               Radiant_getImageModules().foreachModule( visitor );
+                       }
                }
        }
 
@@ -913,6 +936,15 @@ void TextureBrowser_ShowTagSearchResult( TextureBrowser& textureBrowser, const c
                        LoadTexturesByTypeVisitor visitor( dirstring.c_str() );
                        Radiant_getImageModules().foreachModule( visitor );
                }
+
+               // Doom3-like dds/ prefix (used by DarkPlaces).
+               dirstring.clear();
+               dirstring << "dds/textures/" << directory;
+
+               {
+                       LoadTexturesByTypeVisitor visitor( dirstring.c_str() );
+                       Radiant_getImageModules().foreachModule( visitor );
+               }
        }
 
        // we'll display the newly loaded textures + all the ones already in use
diff --git a/setup/data/tools/bitmaps/window5.png b/setup/data/tools/bitmaps/window5.png
new file mode 100644 (file)
index 0000000..24335a5
Binary files /dev/null and b/setup/data/tools/bitmaps/window5.png differ