Revision: 4972 http://tigervnc.svn.sourceforge.net/tigervnc/?rev=4972&view=rev Author: astrand Date: 2012-08-27 07:28:08 +0000 (Mon, 27 Aug 2012) Log Message: ----------- Added a standard -geometry command line option. Such an option is actually already documented on the man page.
Modified Paths: -------------- trunk/vncviewer/CMakeLists.txt trunk/vncviewer/DesktopWindow.cxx trunk/vncviewer/parameters.cxx trunk/vncviewer/parameters.h Modified: trunk/vncviewer/CMakeLists.txt =================================================================== --- trunk/vncviewer/CMakeLists.txt 2012-08-26 21:19:19 UTC (rev 4971) +++ trunk/vncviewer/CMakeLists.txt 2012-08-27 07:28:08 UTC (rev 4972) @@ -45,15 +45,55 @@ add_executable(vncviewer ${VNCVIEWER_SOURCES}) endif() -target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES}) -# When building with GnuTLS, librdr depends on ws2_32, so in order to make -# MinGW happy, we need to put ws2_32 in librdr's target_link_libraries string, -# not here. -if(NOT GNUTLS_FOUND AND WIN32) - target_link_libraries(vncviewer ws2_32) +# XXX: Cendio hack +#target_link_libraries(vncviewer rfb network rdr os Xregion ${FLTK_LIBRARIES} ${GETTEXT_LIBRARIES}) +# +## When building with GnuTLS, librdr depends on ws2_32, so in order to make +## MinGW happy, we need to put ws2_32 in librdr's target_link_libraries string, +## not here. +#if(NOT GNUTLS_FOUND AND WIN32) +# target_link_libraries(vncviewer ws2_32) +#endif() + +target_link_libraries(vncviewer -nodefaultlibs rfb network rdr os Xregion) + +if(APPLE) + target_link_libraries(vncviewer "-framework Carbon" "-framework Cocoa" "-framework ApplicationServices") endif() +if(UNIX AND NOT APPLE) + # Needed to load icon files + target_link_libraries(vncviewer -Wl,-Bstatic ${FLTK_IMAGES_LIBRARY} png -Wl,-Bdynamic) +endif() + +target_link_libraries(vncviewer -Wl,-Bstatic ${FLTK_BASE_LIBRARY} -Wl,-Bdynamic) + +if(WIN32) + target_link_libraries(vncviewer -Wl,-Bstatic ${GETTEXT_LIBRARIES} ${ICONV_LIBRARIES} -Wl,-Bdynamic) +elseif(APPLE) + target_link_libraries(vncviewer -Wl,-Bstatic ${GETTEXT_LIBRARIES} -Wl,-Bdynamic ${ICONV_LIBRARIES}) +else() + if(${CMAKE_SYSTEM_NAME} MATCHES "SunOS") + # XXX: Cendio hack: Add rpath to find libXfixes on Solaris without LD_LIBRARY_PATH. + # XXX: Cendio hack: libXft is broken on at least our servers + # XXX: Cendio hack: In theory, we must add freetype. However, in practice this does not work, since it is not found, + # since it's in /usr/sparc-sun-solaris2.10/sys-root/usr/sfw/lib/. It works if we DONT specify it, though. + target_link_libraries(vncviewer ${X11_Xcursor_LIB} ${X11_Xfixes_LIB} /usr/sparc-sun-solaris2.10/sys-root/usr/X11/lib/libXinerama.so -Wl,-Bstatic Xft -Wl,-Bdynamic fontconfig Xext -R/usr/sfw/lib) + else() + target_link_libraries(vncviewer -Wl,-Bstatic ${X11_Xcursor_LIB} ${X11_Xfixes_LIB} Xft fontconfig expat freetype Xrender Xext Xinerama -Wl,-Bdynamic) + endif() + target_link_libraries(vncviewer X11 m ) +endif() + +target_link_libraries(vncviewer libstdc++.a gcc gcc_eh) + +if(WIN32) + target_link_libraries(vncviewer ws2_32 comctl32 mingw32 moldname mingwex msvcrt kernel32 gcc) +else() + target_link_libraries(vncviewer c) +endif() + install(TARGETS vncviewer DESTINATION ${BIN_DIR}) if(UNIX) install(FILES vncviewer.man DESTINATION ${MAN_DIR}/man1 RENAME vncviewer.1) Modified: trunk/vncviewer/DesktopWindow.cxx =================================================================== --- trunk/vncviewer/DesktopWindow.cxx 2012-08-26 21:19:19 UTC (rev 4971) +++ trunk/vncviewer/DesktopWindow.cxx 2012-08-27 07:28:08 UTC (rev 4972) @@ -88,12 +88,42 @@ } else #endif { + + int geom_x = 0, geom_y = 0; + if (geometry.hasBeenSet()) { + int matched; + matched = sscanf(geometry.getValueStr(), "+%d+%d", &geom_x, &geom_y); + if (matched == 2) { + force_position(1); + } else { + int geom_w, geom_h; + matched = sscanf(geometry.getValueStr(), "%dx%d+%d+%d", &geom_w, &geom_h, &geom_x, &geom_y); + switch (matched) { + case 4: + force_position(1); + /* fall through */ + case 2: + w = geom_w; + h = geom_h; + default: + vlog.error("Invalid geometry specified!"); + } + } + } + // If we are creating a window which is equal to the size on the // screen on X11, many WMs will treat this as a legacy fullscreen // request. This is not what we want. Besides, it doesn't really // make sense to try to create a window which is larger than the // available work space. - size(__rfbmin(w, Fl::w()), __rfbmin(h, Fl::h())); + w = __rfbmin(w, Fl::w()); + h = __rfbmin(h, Fl::h()); + + if (force_position()) { + resize(geom_x, geom_y, w, h); + } else { + size(w, h); + } } show(); Modified: trunk/vncviewer/parameters.cxx =================================================================== --- trunk/vncviewer/parameters.cxx 2012-08-26 21:19:19 UTC (rev 4971) +++ trunk/vncviewer/parameters.cxx 2012-08-27 07:28:08 UTC (rev 4972) @@ -100,6 +100,8 @@ StringParameter desktopSize("DesktopSize", "Reconfigure desktop size on the server on " "connect (if possible)", ""); +StringParameter geometry("geometry", + "Specify size and position of viewer window", ""); BoolParameter remoteResize("RemoteResize", "Dynamically resize the remote desktop size as " "the size of the local client window changes. " @@ -155,6 +157,7 @@ #endif // HAVE_FLTK_FULLSCREEN_SCREENS #endif // HAVE_FLTK_FULLSCREEN &desktopSize, + &geometry, &remoteResize, &viewOnly, &shared, Modified: trunk/vncviewer/parameters.h =================================================================== --- trunk/vncviewer/parameters.h 2012-08-26 21:19:19 UTC (rev 4971) +++ trunk/vncviewer/parameters.h 2012-08-27 07:28:08 UTC (rev 4972) @@ -46,6 +46,7 @@ #endif // HAVE_FLTK_FULLSCREEN_SCREENS #endif // HAVE_FLTK_FULLSCREEN extern rfb::StringParameter desktopSize; +extern rfb::StringParameter geometry; extern rfb::BoolParameter remoteResize; extern rfb::BoolParameter viewOnly; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Tigervnc-commits mailing list Tigervnc-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tigervnc-commits