我正在尝试创建一个小窗口管理器(只是为了好玩),但我在处理由Firefox创建的窗口时遇到问题(只有该应用程序,其他应用程序工作正常)
问题是,在我启动Firefox后,添加我的装饰,它似乎工作正常,但如果我尝试单击菜单按钮,则不会出现(子)窗口.
似乎发生的是,在单击之后,会使用以下值触发ClientMessage事件:
Data: (null)
Data: _NET_WM_STATE_HIDDEN
Data: (null)
Data: (null)
Data: (null)
Run Code Online (Sandbox Code Playgroud)
现在的问题是我不知道如何显示窗口,哪个窗口.我尝试过:
但没有成功.我不明白的是,如果此客户端消息是由菜单子窗口生成的.
我应该如何显示_NET_WM_STATE_HIDDEN中的窗口?
另一个奇怪的问题是,在收到ClientMessage后,我总是收到2个UnMapNotify事件.
我还有另一个问题,如果我想显示"文件,编辑"菜单(在Firefox中显示,如果我没记错,当你按下Alt键时).
也许Firefox创建了一个窗口树?
这是我处理事件的循环:
while(1){
XNextEvent(display, &local_event);
switch(local_event.type){
case ConfigureNotify:
configure_notify_handler(local_event, display);
break;
case MotionNotify:
motion_handler(local_event, display);
break;
case CreateNotify:
cur_win = local_event.xcreatewindow.window;
char *window_name;
XFetchName(display, cur_win, &window_name);
printf("Window name: %s\n", window_name);
if(window_name!=NULL){
if(!strcmp(window_name, "Parent")){
printf("Adding borders\n");
XSetWindowBorderWidth(display, cur_win, BORDER_WIDTH);
}
XFree(window_name);
}
break;
case MapNotify:
map_notify_handler(local_event,display, infos);
break;
case UnmapNotify:
printf("UnMapNotify\n");
break;
case DestroyNotify:
printf("Destroy Event\n");
destroy_notify_handler(local_event,display);
break;
case ButtonPress: …Run Code Online (Sandbox Code Playgroud) 我是Chrome扩展开发的新手,我的第一个项目(学习)是创建一个扩展,将一些html添加到另一个网站的现有页面.
我计划创建一个"页面"操作,该操作会触发具有特定URL的页面...
有没有人看过这样的教程,或者你知道用于向页面添加html的API吗?
我希望我的ImageView中的drawable显示为与底部(Imageview)对齐,而不是居中.
有可能吗?
我正在尝试为我的chrome扩展程序开发导入功能,但是这个任务似乎比预期更困难.
其实我的想法是用一个
<input type="file" id="myInput">
Run Code Online (Sandbox Code Playgroud)
要加载文件,然后在该元素上添加更改侦听器:
element.addEventListener('change', function(evt){
read_single_file(evt,tab);
}
Run Code Online (Sandbox Code Playgroud)
现在我面临几个问题:
我找到了另一种解决方案,建议将文件逻辑添加到后台页面中,如果弹出窗口失去焦点,则不会销毁.然后我在后台添加了这个功能:
file_import = function(element, tab) {
element.addEventListener('change', function(evt){
read_single_file(evt,tab);
}, false);
element.click();
console.log("uffa");
}
Run Code Online (Sandbox Code Playgroud)然后我更新了我的popup.js来调用后台方法:
get_current_tab(function(tab){
var BGPage = chrome.extension.getBackgroundPage();
BGPage.file_import(document.getElementById('myInput'), tab);
});
Run Code Online (Sandbox Code Playgroud)
以这种方式,file_import由弹出窗口调用,它将更改侦听器添加到myInput元素,并打开文件打开对话框但是...打开文件对话框弹出消失,以及与之相关的所有内容,然后......同样的问题.
所以我决定尝试在后台页面中创建一个新的输入文件元素,并从中触发click事件,但显然它不起作用.
所以,我被困在这里,没有关于如何解决这个问题的好主意.或者至少我心里很少,但我不知道它们是否有效,或者它们只是解决方法.
总结我的问题是:
我正在编写一个需要在android中的日历中添加一些事件的应用程序.对于插入我只使用了以下代码:
public void onItemClick(AdapterView<?> adapter, View curview, int position, long id) {
WhoisEntry entry = this.adapter.getItem(position);
String domainName = entry.getDomainName();
Date expDate = entry.expirationDate;
Toast.makeText(getApplicationContext(), "Domain: " + domainName, Toast.LENGTH_SHORT).show();
Calendar cal = Calendar.getInstance();
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra("beginTime", entry.expirationDate);
intent.putExtra("allDay", false);
intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
intent.putExtra("title", "Expiration of " + entry.domainName);
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
现在我想知道是否有可能获得与该事件相关联的id,在插入事件后以这种方式,并且其id被保存到我的应用程序中,用户可以直接从应用程序内部调用该事件.可能吗?
我需要使用对话框界面在bash脚本中创建一个radiolist,例如,如果我有以下列表:
dialog --backtitle "OS infomration" \
--radiolist "Select OS:" 10 40 3 \
1 "Linux 7.2" off \
2 "Solaris 9" on \
3 "HPUX 11i" off
Run Code Online (Sandbox Code Playgroud)
我希望当用户选择一个选项并按下确定时,我的脚本会读取项目名称(而不是项目编号).
有可能的?谢谢!
我正在尝试获取所有能够发送短信的应用程序列表.
我找到了几个解决方案,建议使用PackageManager.
我认为要使用的Intent是ACTION_SEND,但是当我运行我的代码时,我总是收到一个空列表.
这是我的代码:
Intent mainIntent = new Intent(Intent.ACTION_SEND, null);
List<ResolveInfo> pkgAppsList = getApplicationContext().getPackageManager().queryIntentActivities( mainIntent, PackageManager.GET_RESOLVED_FILTER);
int size = pkgAppsList.size();
int i = 0;
Log.i(TAG, "Size: " + size);
for(ResolveInfo infos : pkgAppsList){
String name = infos.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();
Log.i(TAG, "name: " + name);
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我正在尝试MarshalJSON使用界面自定义输出:
func (m *RawMessage) MarshalJSON() ([]byte, error)
Run Code Online (Sandbox Code Playgroud)
我按照那个教程:http://choly.ca/post/go-json-marshalling/
我的目的是删除用true/false替换其中一个字段(如果设置或不设置),所以我最终编写了该函数:
func (u *Edition) MarshalJSON() ([]byte, error) {
var vaultValue bool
vaultValue = true
var onlineValue bool
vaultValue = false
fmt.Println("here")
if u.Vault == nil {
vaultValue = false
}
if u.Online == nil {
onlineValue = false
}
type AliasEdition Edition
return json.Marshal(&struct {
Vault bool `json:"vault,omitempty"`
Online bool `json:"online,omitempty"`
*AliasEdition
}{
Vault: vaultValue,
Online: onlineValue,
AliasEdition: (*Alias)(u),
})
}
Run Code Online (Sandbox Code Playgroud)
JSON是使用以下指令从地图创建的:
json.NewEncoder(w).Encode(EditionsMap)
Run Code Online (Sandbox Code Playgroud)
显然EditionsMap是Edition …
是否可以收听通过Google Voice收到的短信?
谢谢.
我试图弄清楚由什么键处理:
在xcb中,对于XCB_MOD_MASK_1,它似乎是Alt(我是对的吗?),但是对于其他按钮,我在任何地方都找不到映射(我尝试在发布之前用Google搜索它们,但没有成功)。
那么与这些面罩相关的通常的按键是什么?